Ich schreibe eine kleine Anwendung in VB.net, mit der ich einfach ein Benutzer- "Windows 7-Konto" mit einem Kennwort erstellen kann, anstatt das Kontrollfeld zu durchlaufen. Das Problem, das ich habe, ist, dass wenn ich eine Bat-Datei in VB.net mit UTF-8-Codierung erstelle, sie nicht so schreibt, wie es angenommen wird. Ich habe alle Codierungen ausprobiert, die ich finden kann, kann sie jedoch nicht zum Laufen bringen.
Wenn jemand eine Idee hat, warum ich das bekomme, lass es mich wissen. Vielen Dank im Voraus!
Antworten:
Bearbeiten: Ich habe mich geirrt;)
cmd.exe
akzeptiert UTF-8, aber Sie müssen sicher sein, es ohne dasBOM
am Anfang der Datei zu speichern.Hier ist ein zweiter Test. Sie können
chcp 65001
am Anfang Ihrer Batch-Datei verwenden.Eine Batchdatei kann nicht vom Typ UTF-8 sein. Es muss ASCII sein.
Cmd.exe
akzeptiert einfach kein anderes Format. Ich habe einen kleinen Test gemacht und du kannst deine Charaktere benutzen, aber es braucht etwas Arbeit.Machen Sie eine Datei
test.bat
mitecho Å Ä Ö
. Speichern Sie es mit FormatANSI/ASCII
. Öffnen Sie acmd.exe
und stellen Sie sicher, dass Sie escmd.exe
verwendenLucida Console
(um die Unicode-Zeichen anzuzeigen).Wenn Sie die Datei eingeben, werden Zeichen als alte DOS-Zeichen angezeigt. Sie können eine Übersetzung Chart sehen hier .
Wenn Sie zu einer "Windows Ansi" - Codepage (dh westeuropäisches Latein) wechseln, werden
chcp 1252
die Zeichen korrekt angezeigt. Ob sie auch zu ihren jeweiligen Dienstprogrammen übertragen werden, hängt von diesem Dienstprogramm ab.Aber warum erstellen Sie dafür eine Batch-Datei? Können Sie es nicht einfach in VB.net codieren?
Bearbeiten 2 #:
Dies ist , wie Sie festgelegt
Lucida Console
incmd.exe
:Das
BOM
sind 3 Zeichen am Anfang einer UTF-8-Datei. (\xEF\xBB\xBF
).In VB.net würden Sie eine Datei erstellen , ohne eine
BOM
wie folgt aus :quelle
Lucida Console
ohne und ohne Datei zu erstellenBOM
(Bearbeiten Nr. 2 unten). Aber funktioniert das Erstellen dieses Benutzers übernet user
die Eingabeaufforderung? Und was funktioniert nicht, wenn Sie es über VB.net erstellen? Dafür benötigen wir einen Beispielcode (oder eine separate Frage), da dies funktionieren sollte. (Übrigens haben Sie mein Bild verlinkt, nicht Ihr Bild, glaube ich, in Ihrem Kommentar)find
geht UTF-8-Eingabe nicht so gut. Aber du kannst verwendenfindstr
. So:ping 127.0.0.1 -n 2 | findstr /C:" = "
Die Sache, die dies für mich behoben hat, war, die Datei als UTF-8 ohne Stückliste zu speichern und diesen Code zu verwenden
Das, was ich vorher nicht benutzt habe, war @echo aus, so dass und die Verwendung von chcp 65001 das Problem behoben hat! Danke auch Rik für all die Hilfe :)
quelle