Batch-Skript wird nicht ausgeführt, wenn chcp genannt wurde
Ich versuche, löschen Sie einige Dateien mit unicode-Zeichen in Ihnen mit batch-script (es ist eine Anforderung). Also ich starte cmd und ausführen:
> chcp 65001
Effektiv einstellen-Zeichensatz auf UTF-8. Und es funktioniert:
D:\temp\1>dir
Volume in drive D has no label.
Volume Serial Number is 8C33-61BF
Directory of D:\temp\1
02.02.2010 09:31 <DIR> .
02.02.2010 09:31 <DIR> ..
02.02.2010 09:32 508 1.txt
02.02.2010 09:28 12 delete.bat
02.02.2010 09:20 95 delete.cmd
02.02.2010 09:13 <DIR> Rún
02.02.2010 09:13 <DIR> Гуцул Каліпсо
3 File(s) 615 bytes
4 Dir(s) 11 576 438 784 bytes free
D:\temp\1>rmdir Rún
D:\temp\1>dir
Volume in drive D has no label.
Volume Serial Number is 8C33-61BF
Directory of D:\temp\1
02.02.2010 09:56 <DIR> .
02.02.2010 09:56 <DIR> ..
02.02.2010 09:32 508 1.txt
02.02.2010 09:28 12 delete.bat
02.02.2010 09:20 95 delete.cmd
02.02.2010 09:13 <DIR> Гуцул Каліпсо
3 File(s) 615 bytes
3 Dir(s) 11 576 438 784 bytes free
Dann habe ich die gleichen rmdir
Befehle im batch-Skript, und speichern Sie Sie in UTF-8-Codierung. Aber wenn ich Laufe passiert nichts, buchstäblich nichts: nicht einmal echo Werke von batch-Skript in diesem Fall. Auch das sichern-Skript in OEM-Codierung nicht helfen.
So scheint es, dass wenn ich auf Zeichensatz UTF-8 in der Konsole, Skripts einfach aufhören zu arbeiten. Weiß jemand, wie man dieses Problem beheben?
- Nachdenken und schreiben eine tatsächliche bald Antworten, aber zwei Fragen: bist du sicher, dass deine batch-Datei nicht haben, U+FEFF am Anfang? Und können Sie VBScript verwenden vielleicht anstelle einer batch-Datei? Unicode-Unterstützung ist es viel einfacher dort.
- Nein, es ist keine Stückliste in der batch-Datei. Ich kann die Verwendung von VBS, aber ich wollte nur wissen, ob mein problem gelöst werden kann direkt.
- Vielleicht kann es; ich habe einige Fortschritte gemacht, vor einer Weile mit Unicode in batch-Dateien, aber es ist keineswegs hübsch, und es war durchwachsen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, um unicode unterstützt batch-Datei, dann CHCP auf einer Linie von selbst, nur bricht die batch-Datei. Was ich vorschlagen, setzen CHCP auf jedem batch-Datei die Zeile, die Bedürfnisse unicode wie folgt
Beispiel: In meinem Fall wollte ich einen schönen SCHWANZ von mein log-Dateien beim Debuggen, aber der Inhalt für die selbst Latin-1-Zeichen war Durcheinander. Also hier ist meine batch-Datei, die umschließt den echten Schwanz Implementierung von Windows Resource Kit.
Darüber hinaus für die Ausgabe auf eine Konsole, die Sie brauchen, um einen true-type-font, d.h. Lucidia Console.
Und anscheinend für die Ausgabe in eine Datei die Befehlszeile ausgeführt werden muss als Unicode, so würden Sie kick off Ihre batch-Skript wie folgt
Disclaimer: Getestet auf Windows XP sp3 mit Windows Resource Kit.
chcp 65001 && path\to\batchfile.bat
auch funktionieren würde?Die Unicode-Unterstützung in der Konsole, und vor allem in batch-Dateien, ist ziemlich schlecht.
Können Sie "Drehung" der Anspruch, zu sagen, PowerShell und Active Scripting (VBScript oder JScript)?
Wird es sparen Sie eine Menge Kummer in der auf lange Sicht (wenn Sie brauchen, um zu wachsen, das über diese einfache Aufgabe)
Nicht zu erwähnen, dass beide PowerShell und ActiveScripting verwenden viel mächtiger Sprachen, so dass für Funktionen, die ordnungsgemäße Schleifen, real-Variablen, Debugger, eine Menge goodies für eine ernsthafte Projekt.
Versuchen Sie, eine leere Zeile als erste Zeile in deine batch-Datei...
Zeile 1:
Zeile 2:CHCP 65001
Zeile 3:Skript commmands
Sollte funktionieren!