Wenn ich bestimmte Dateien (hauptsächlich Batch-Dateien) mit PsExec ausführe, werden diese seltsamen Symbole vor meinem Befehl angezeigt. Mein erster Gedanke war, dass ich eine falsche Codierung verwendete, aber nach der Überprüfung stellte ich fest, dass alle meine Dateien UTF-8 verwendeten.
25
Antworten:
Dies hat zwei Ursachen:
cmd.exe unterstützt UTF-8 nicht. Es wird immer eine der Single-Byte-Codierungen verwendet, die oft als "OEM" bezeichnet werden - cp437, cp775 usw., abhängig von den regionalen Einstellungen des Systems.
(Ich habe erwartet, dass es auch UTF-16 unterstützt, aber anscheinend nicht. Auch nicht, wenn ich die UTF-16-Stückliste hinzugefügt habe.)
Ihr Texteditor fügt
EF
BB
BF
am Anfang aller UTF-8-Dateien eine UTF-8-Markierung (Byte Order Mark ) ein.Wenn cmd.exe Ihr Skript liest, weiß es nicht, was es mit der Markierung tun soll - es sieht die Stückliste als drei gewöhnliche cp437-Zeichen
’
╗
┐
und versucht, sie als Teil des Befehlsnamens zu verwenden.Konfigurieren Sie Ihren Editor so, dass das Hinzufügen der Stückliste zu UTF-8-codierten Dateien beendet wird. (Dies ist nur in UTF-16 sinnvoll und in UTF-8 sehr nutzlos.)
äh
Was
quelle
Zur weiteren Antwort des @ dsolimano , wenn Sie speziell mit Visual Studio , und in meinem Fall ist es 2013 , fest ich es durch folgende Maßnahmen:
Wenn Sie jetzt eine .bat- Datei in Visual Studio öffnen , werden Sie zunächst dazu aufgefordert:
Sie werden die Optionen durchgehen wollen, bis Sie zur DOS- Option Ihrer Sprache kommen:
Klicken Sie auf OK , um das Öffnen der Datei abzuschließen.
Okay, auch wenn es an dieser Stelle ziemlich offensichtlich sein sollte, dass Sie die

Zeichen am Anfang Ihrer Datei sehen, müssen Sie sie entfernen und die Datei jetzt mit der richtigen Codierung speichern. Dies verhindert, dass Sie beim nächsten Mal erneut dazu aufgefordert werden.Nach alledem sind Sie froh zu wissen, dass Sie jetzt Ihre .bat- Datei (en) in Visual Studio anzeigen , bearbeiten und speichern können, sodass cmd.exe nicht mehr den oben genannten abscheulichen Fehler verursacht:
quelle
Das sind Unicode Byte Order Marks . Cmd.exe versteht sie nicht. Wenn Sie Ihre Dateien im Editor mit ANSI-Codierung erneut speichern, sollte dies das Problem beheben.
Zum Beispiel habe ich diese Batch-Datei erstellt:
Zuerst speichere ich es mit UTF-8-Codierung
Dann mit Unicode
Und schließlich mit ANSI
quelle
Wie bereits erläutert, handelt es sich bei diesem Zeichen um das Unicode-Zeichen BOM (Byte Order Mark), das als Signatur verwendet wird und von cmd.exe nicht erkannt wird.
Sie können es auf viele Arten sicher löschen.
Ich fand es sehr einfach, wie folgt vorzugehen:
quelle