![Einfache Batchdatei schlägt unter Windows Server 2012 fehl](https://rvso.com/image/1413938/Einfache%20Batchdatei%20schl%C3%A4gt%20unter%20Windows%20Server%202012%20fehl.png)
Auf einem Windows 2012-Server hat ein angemeldeter Administrator (lokal und Domäne) eine Batchdatei „test.bat“ erstellt, indem er die Konsoleneingabe in eine Datei umgeleitet hat:
echo Hello
Bei der Ausführung als von der PowerShell-Eingabeaufforderung aus .\test.bat
wird Folgendes ausgegeben:
'■e' is not recognized as an internal or external command,
Die Batchdatei befindet sich im Verzeichnis C:\Benutzer\%Benutzername% des angemeldeten Benutzers.
Die Datei wurde von der Konsole aus erstellt, also:
echo "echo Hello" > test.bat
und dann mit Notepad bearbeitet. Sah in Notepad ganz gut aus ... nichts Ungewöhnliches.
Irgendwelche Ideen, was los ist?
BEARBEITET:
Auf Vorschlag habe ich die Befehlszeileneingabe geändert, um Anführungszeichen zu entfernen. Daher habe ich den Befehl wie folgt eingegeben: echo echo Yowzer > test.bat
Ausgeführt als: .\test.bat
und habe dieselbe Antwort wie oben erhalten. Beachten Sie auch, dass, wenn ich die obige test.bat (d. h. in der Befehlszeile erstellt) in Notepad bearbeite und erneut ausführe, immer noch eine ungültige Antwort zurückgegeben wird. Wenn ich die Datei jedoch in Notepad erstelle/speicherevon Anfang an,es funktioniert einwandfrei.
Kann das jemand nachmachen?
Antwort1
Es sieht so aus, als ob die Umleitung >
Ihre Batchdatei in Unicode kodiert hat, obwohl sie ASCII sein sollte. Verwenden Sie in Powershell Out-File
statt der Umleitung Folgendes:
"echo test" | Out-File test.bat -Encoding ascii
Das Ausführen der Batchdatei nach der folgenden Kodierung reproduziert den Fehler:
"echo test" | Out-File test.bat -Encoding unicode
Antwort2
Hatte das gleiche Problem und dachte, ich wäre verrückt.
Erstellen Sie Ihre Batchdatei auf einem anderen Computer. Ich hatte das gleiche Problem, als ich Notepad öffnete und die Befehle normal eintippte. Es wurde mir immer die gleiche Meldung angezeigt. Nachdem ich die Batchdatei auf meinem lokalen Win7-Gerät neu erstellt (die alte Datei nicht kopieren) und sie auf meinen Win 2012R2-Server zurückkopiert hatte, funktionierte alles einwandfrei.
Antwort3
Wahrscheinlich haben Sie irgendwo ein komisches Zeichen. Ich bin mir ziemlich sicher, dass xxd -p blah.bat
Sie in diesem Fall ein paar komische Zeichen in Ihrer Batchdatei sehen werden.
Sie könnten dann darüber nachdenken, wie sie dorthin gekommen sind, und sie entfernen. Und das kann mit xxd und sed gemacht werden. Oder vielleicht auf eine andere Weise, wenn Sie wissen, um welche Charaktere es sich handelt.
Sie können xxd durch Herunterladen von VIM 7.X oder von Cygwin erhalten.
Oder Sie suchen sich einen Hex-Editor und legen die Batchdatei in den Hex-Editor.
Sie sagen, Sie erstellen die Batchdatei von stdin aus. Nun, Sie könnten genauer ausführen, was Sie damit meinen, z. B. was meinen Sie dann mit copy con blah.bat
STRG+Z? Aber was auch immer Sie meinen, es fügt einige komische Zeichen in die Datei ein.
hinzugefügt
Ich sehe, Sie geben an, dass Sie es mit Echo und Umleitung gemacht haben.
Sie können dies für einige Fehlerbehebungen leicht vereinfachen
Versuchen type blah.bat
Wenn dabei ein lustiger Charakter angezeigt wird, versuchen Sie,
echo H>blah.bat
ihn entsprechend Ihrer Eingabe auszubauen und sehen Sie, an welcher Stelle der lustige Charakter angezeigt wird.
Eine weitere Möglichkeit zum Experimentieren ist die Eingabe- und Ausgabekodierung
Probieren Sie chcp. chcp 850 und chcp 65001 aus und prüfen Sie, ob Sie Unterschiede feststellen. chcp ändert sowohl die Eingabe- als auch die Ausgabekodierung, zeigt Ihnen jedoch nur die Eingabekodierung an.
Wenn Sie sich meine Antwort hier ansehenhttps://stackoverflow.com/questions/30904504/font-is-right-why-cant-i-get-this-unicode-character-to-display-in-this-c-sharp/32418703#32418703 Sie sehen ein Programm namens chcpa, das ich vor einiger Zeit geschrieben habe, und mit dem Sie Eingabe- und Ausgabekodierungen flexibler ändern können als mit chcp. Oder Sie könnten einfach chcp verwenden, aber wenn Sie feststellen, dass chcp Sie bei der Fehlerbehebung einschränkt, können Sie chcpa ausprobieren.
Aber eines Ihrer besten Tools zur Fehlerbehebung wäre hier ein Hex-Editor oder xxd, wie erwähnt. Und versuchen Sie, Ihre Zeile wie vorgeschlagen noch weiter zu vereinfachen.
Mithilfe solcher Schritte können Sie den Fehler eingrenzen. Und geben Sie einen Kommentar ab, wenn Sie hier oder weiter etwas versuchen.
Antwort4
Echo verwendet keine Anführungszeichen. Entfernen Sie die doppelten Anführungszeichen, dann funktioniert es.
echo echo hello > test.bat
Echo sucht nach der Zeichenfolge nach Echo und dem Leerzeichen. Die Anführungszeichen unterbrechen die Zeichenfolge.
Mehr zuEcho.