De l'enregistrement "tree /f /a" résultats dans un fichier texte avec le support de l'unicode
Je suis en train d'utiliser l'arbre de commande dans une fenêtre de ligne de commande pour générer un fichier texte listant le contenu d'un répertoire, mais quand je le tuyau de la sortie de l'unicode des caractères se faire bourrer jusqu'.
Ici est la commande que j'utilise:
tree /f /a > output.txt
Les résultats dans la fenêtre de la console sont beaux:
\---Erika szobája le couvercle.jpg Erika szobája.m3u Kátai Tamás - 01 Télvíz.ogg Kátai Tamás - 02 Zölderdõ.ogg Kátai Tamás - 03 Renoir kertje.ogg Kátai Tamás - 04 Esõben szaladtál.ogg Kátai Tamás - 05 Ázik az út.ogg Kátai Tamás - 06 Sûrû völgyek takaród.ogg Kátai Tamás - 07 Õszhozó.ogg Kátai Tamás - 08 Mécsvilág.ogg Kátai Tamás - 09 Zúzmara.ogg
Mais le fichier texte n'est pas bon:
\---Erika szob ja le couvercle.jpg Erika szob ja.m3u K tai Tam s - 01 T'lv¡z.ogg K tai Tam s - 02 Z”lderdä.ogg K tai Tam s - 03 Renoir kertje.ogg K tai Tam s - 04 Esäben szaladt l'.ogg K tai Tam s - 05 µzik az £t.ogg K tai Tam s - 06 S–r– v”lgyek takar¢d.ogg K tai Tam s - 07 åszhoz¢.ogg K tai Tam s - 08 M'csvil g.ogg K tai Tam s - 09 Z£zmara.ogg
Comment puis-je résoudre ce problème? Idéalement, le fichier texte serait exactement la même que la sortie dans la fenêtre de la console.
J'ai essayé Chris Bouffon,-les Jeunes de la suggestion (ce qui s'est passé, avez-vous le supprimer de Chris?) de l'exécution de la ligne de commande avec le commutateur /U, il ressemblait exactement à ce dont j'avais besoin, mais il ne semble pas fonctionner. J'ai essayé d'ouvrir le fichier dans VS2008 et le bloc-notes, et montrent les mêmes caractères incorrects.
- Heh, j'ai d'abord écrit une réponse à cette pensée qu'il faut travailler, mais ensuite je l'ai testé et il n'a pas. Oh pinaise!
- Yep je l'ai d'abord écrit un commentaire, vous remerciant pour elle, et d'avoir ensuite à les supprimer quand j'ai réalisé qu'il ne fonctionnait pas! cmd /U avait l'air parfait, pourquoi ne pas faire le travail? Hmm
- Essayez d'utiliser une commande echo pour mettre la marque d'ordre des octets dans le fichier? en.wikipedia.org/wiki/Byte-order_mark
- Oui, j'ai supprimé mon post: il n'y a pas de point de quitter la désinformation autour pour les gens de tomber, seulement pour réaliser que ça ne fonctionne pas. 😐
- Paul, comment voyez-vous le fichier texte?
- Comme je l'ai mentionné dans ma question Vulcan j'ai essayé en le regardant dans VS2008 et le bloc-notes. Depuis, j'ai aussi essayé firefox, wordpad et msword. Toujours pas de chance.
- cmd /U a d'étranges résultats. Il ressemble à un mélange de l'UTF-16 et la normale de la console de codage. (Je suis sur Vista, europe Occidentale)
- J'ai utilisé "cmd /U" et ensuite le bloc-notes. Elle fonctionne.
- Ne fonctionne pas pour moi. Quel OS/locale utilisez-vous?
- Aussi, par les "œuvres", avez-vous particulièrement vous dire que les caractères non-ASCII afficher correctement?
- cmd /U était bizarre pour moi aussi, il fait réellement le dossier je courais arbre à disparaître de la dir inscription. Et il n'a pas aidé du tout :/
Vous devez vous connecter pour publier un commentaire.
Avoir quelqu'un l'a déjà essayé ceci:
Ouvrir le bloc-notes, ctrl + V, enregistrer dans le bloc-notes comme output.txt avec le support de l'unicode?
Si vous la sortie en tant que non-Unicode (qui, apparemment, ne), vous avez pour afficher le fichier texte que vous créez à l'aide de la même codage de la fenêtre de la Console utilise. C'est pourquoi il semble correct dans la console. Dans certains éditeurs de texte, vous pouvez choisir un encodage (ou "code page") lorsque vous ouvrez un fichier. (La façon de sortie au format Unicode, je ne sais pas. cmd /U ne pas faire ce que dit la documentation.)
La Console de codage dépend de votre installation de Windows. Pour moi, c'est "de l'europe Occidentale (DOS)" (ou "MS-DOS") dans Microsoft Word.
Utiliser PowerShell:
Cas de Test:
create.ps1
:De sortie:
tree.txt
:EDIT:
Renforcée et améliorée de la version pour les utilisateurs de puissance
Cas de Test:
De son réponse, @Chris Bouffon-Jeunes a écrit:
Cela signifie que nous ne pouvons pas compter sur l'obtention de caractères à partir d'un flux. Fichier les redirections ne fonctionnent pas. Nous devons compter sur l'écriture de la console pour obtenir les caractères Unicode.
La solution de contournement, ou hack, c'est écrire l'arborescence de la console, puis vidage de la mémoire tampon dans un fichier.
J'ai écrit les scripts pour ajouter l'arborescence de menu contextuel lorsque vous cliquez droit sur les répertoires dans l'Explorateur. Enregistrer les fichiers dans le même répertoire, puis exécutez
Install list menu.bat
en tant qu'administrateur pour installer.Install list menu.bat
List files.reg
List.ps1
powershell -command "tree /f > ""output file.txt"""
J'ai décidé que je devais avoir un coup d'oeil à
tree.com
et de comprendre pourquoi c'est le non respect de l'Unicode paramètre de la console. Il s'avère que, comme tant d'autres de la ligne de commande du fichier utilitaires), il utilise une bibliothèque appeléeulib.dll
de faire tous les d'impression (plus précisément,TREE::DisplayName
appelsWriteString
dansulib
).Maintenant, dans
ulib
, leWriteString
méthode est mise en œuvre en deux classes,SCREEN
etSTREAM
. LeSCREEN
version utiliseWriteConsoleW
directement, de sorte que tous les caractères Unicode obtenir correctement affiché. LeSTREAM
version convertit le texte au format Unicode pour l'un de trois différents encodages (_UseConsoleConversions
⇒ console de page de codes (GetConsoleCP
),_UseAnsiConversions
⇒ page de codes ANSI par défaut, sinon ⇒ page de codes OEM par défaut), puis écrit cela. Je ne sais pas comment changer le mode de conversion, et je ne crois pas que la conversion peut être désactivé.J'ai seulement regardé brièvement, donc peut-être plus aventureux, les âmes peuvent parler plus à ce sujet! 🙂
Cela permettra d'enregistrer les résultats au format ASCII (American Standard Code for Information Interchange) sur votre bureau, ASCII\ANSI ne reconnaît pas tous les instruments internationaux ou de caractères étendus:
Cela vous permettra de transformer votre texte ASCII à Unicode (/c doit précéder la commande):
Alors pourquoi ne pas simplement penser le fichier ascii dans un fichier temporaire et de le supprimer?
Si vous devez mettre tous dans une ligne, vous pouvez utiliser:
La réponse courte est vous ne pouvez pas et c'est parce que
tree.com
est une application ANSI, même sur Windows 7.La seule solution est d'écrire votre propre
tree
mise en œuvre. Vous pouvez également déposer un bug de Microsoft, mais je doute qu'ils ne sont pas déjà au courant à ce sujet.Vous pouvez essayer
Si elle est différente de la ligne de CMD, il pourrait être acceptable. 😛
Cela a fonctionné pour moi:
J'ai réussi à les obtenir de la sortie comme il est dans la console, avec tous les caractères non-ascii ne pas converti, par la sortie de la console (juste
tree
), puis de le copier à partir d'elle (menu système -> Edit> Mark, la sélection de tous, Entrée). Console taille de la mémoire tampon doit être augmenté à l'avance, selon le nombre de fichiers/dossiers, dans la console de propriétés (menu système -> Propriétés). D'autres moyens de ne pas travailler.tree|clip
, mentionné dans un précédent post, convertit des caractères non-ascii ascii ceux la même quetree>file.txt
.J'ai réussi à correctement la sortie des caractères non-ascii à partir de l'arbre de commande dans un fichier via Prenez Les Commandes De La Console.
CCT type "option" et sur le premier onglet, sélectionnez "Unicode" sortie". Ensuite, exécutez simplement
XP1 la réponse est grande, mais il avait un mineur mise en garde: l'encodage de sortie est UCS2-LE, bien que je préfère UTF8 (de plus petite taille, et le plus répandu).
Après beaucoup de la recherche et de casse-tête, je peux enfin vous présenter la commande suivante, qui produit une UTF8-BOM fichier:
Si le nom de fichier de sortie avec des espaces:
Merci beaucoup pour cet article: https://www.kongsli.net/2012/04/20/powershell-gotchas-redirect-to-file-encodes-in-unicode/
Aussi, personnellement, j'ai créé les fichiers suivants dans mon CHEMIN:
xtree.cmd
:xtreef.cmd
:Enfin, au lieu de
tree > output.txt
je viens de fairextree output.txt
J'ai utilisé cette méthode pour catalogue de près de 100 SDRAM et USB flashdrives et il a bien fonctionné.
De l'intérieur DOS....
C:\doskey [enter] {pour activer les raccourcis clavier très pratiques}
C:\tree j:\ >> d:\MyCatalog.txt /un [enter] {j:= est ma clé USB ; d:= est là où j'ai envie de catalogue ; /a = voir d'autres offres sur cette page}