Dateien mit Nicht-ASCII-Zeichen im Dateinamen in einer Windows-Batchdatei

Dateien mit Nicht-ASCII-Zeichen im Dateinamen in einer Windows-Batchdatei

Auf einem normalen (westlichen) Windows-Computer habe ich eine Datei

файл.txt

mit Nicht-ASCII-Buchstaben im Dateinamen. Wie kann ich Folgendes aus einer .bat-Datei machen?

dir файл.txt
ren файл.txt file.txt

usw.?

Ich habe versucht, die obigen Befehle in eine Datei einzufügen mybat.bat(mit UTF-8- oder UTF-16-Kodierung), aber es funktioniert nicht, selbst wenn ich es als ausführe cmd /u /c mybat.bat.

Hinweis: Die Frage ist nicht, wie diese Buchstaben in eine Batchdatei eingefügt werden, sondern wie die Batchdatei das Erwartete tut (in meinem Beispiel die Datei auflisten und dann umbenennen).

Hinweis: dir > log.txtDer Befehl zeigt die Datei файл.txt als ????.txt an. dirAuf dem Bildschirm wird diese Datei jedoch korrekt als файл.txt angezeigt.

Antwort1

Ihr Hauptproblem ist die Schriftarthttps://stackoverflow.com/questions/9321419/unicode-utf-8-text-file-gibberish-on-windows-console-trying-to-display-hebrewMit der richtigen Schriftart werden Sie keine Fragezeichen erhalten. Fügen Sie daher Courier New zur Eingabeaufforderung hinzu. Dann können Sie solche Zeichen eingeben oder anzeigen/wiedergeben.

Wenn Sie dann feststellen, dass bei einigen Befehlen Probleme auftreten, versuchen Sie es mit chcp 65001 (als Antwort auf Ihre Frage können Sie sicher sein, dass chcp 65001 nur dieses Eingabeaufforderungsfenster betrifft). Sie benötigen chcp 65001, damit die Umleitung mit Zeichen jenseits von \u7F funktioniert. Beispielsweise dir >asdfbenötigt dieser Befehl zum Schreiben einer Datei mit diesen Zeichen chcp 65001. Ihr ren-Befehl funktioniert jedoch auch ohne 65001 einwandfrei.

Hinweis: OP weist auf eine Korrektur hierzu hin. Seine Schriftart war in Ordnung. Aber er brauchte CHCP 65001.

Ein weiterer Fall, in dem man chcp 65001 benötigt, ist, wenn eine Batchdatei in UTF-8 vorliegt. Andernfalls werden selbst bei der Ausführung einer Batchdatei mit nur Buchstaben wie привет diese in Fragezeichen umgewandelt.

OP weist auch auf eine großartige Problemumgehung für das Problem hin, dass Notepad mit UTF-8 mit BOM speichert, während chcp 65001 UTF-8 ohne BOM ist. Und wenn Sie eine Batchdatei haben, die als UTF-8 mit BOM kodiert ist, in der z. B. nur „dir“ steht, oder „echo привет“ (Echo ruft auf) steht, dann wird es nicht funktionieren, selbst wenn cmd die Kodierung 65001 hat. Weil cmd das BOM in die erste Zeile mischt. Eine Problemumgehung besteht also darin, die Befehle ab der zweiten Zeile einzufügen. (Alternativ könnte man einen Texteditor verwenden, der als UTF-8 ohne BOM speichert).

verwandte Informationen