Die einfache Stapeldatei schlägt unter Windows Server 2012 fehl

19320
user340089

Erstellen Sie unter Windows 2012 Server von einem angemeldeten Administrator (lokal und Domäne) eine Batchdatei "test.bat", indem Sie die Konsoleneingabe in eine Datei umleiten:

echo Hello 

Wenn von der PowerShell-Cmd-Eingabeaufforderung als ausgeführt wird .\test.bat, wird Folgendes bestätigt:

'■e' is not recognized as an internal or external command, 

Die Batchdatei befindet sich im Verzeichnis C: \ users \% username% des angemeldeten Benutzers.

Die Datei wurde von der Konsole aus erstellt:

echo "echo Hello" > test.bat 

und dann mit dem Editor bearbeitet. Sah in Notepad gut aus ... nichts Ungewöhnliches.

Irgendwelche Ideen, was los ist?

BEARBEITET:

Pro Vorschlag habe ich die Befehlszeileneingabe geändert, um Anführungszeichen zu entfernen. Geben Sie daher den Befehl wie folgt ein: echo echo Yowzer > test.bat Ran as: .\test.batund erhielt die gleiche Antwort wie oben. Beachten Sie auch, dass ich, wenn ich die obige test.bat-Datei (dh, die in der cmd-Zeile erstellt wurde) in einem neuen Editor bearbeite und erneut ausführte, immer noch eine Müllantwort zurückgibt. Wenn ich die Datei jedoch von Anfang an im Editor erstellt / gespeichert habe , funktioniert sie ordnungsgemäß.

Kann jemand das kopieren?

0
"C: \ Benutzer \% Benutzername%" ?? nicht in einem Unterverzeichnis wie Dokumente? Hast du eine CD in den Ordner geschrieben, der die bat-Datei enthält, und dann ". \ test bat" ausführen? Und Sie führen dies von einer Poweshell-Konsole aus durch, oder? Logman vor 9 Jahren 0
Die Bat-Datei wurde erstellt und von C: \ Unterverzeichnis ausgeführt. Zum Erstellen der bat-Datei wurden zwei Methoden verwendet: (1) `echo stuff> bat.bat` über die Tastatur und (2) in Notepad ++ schreiben und als bat-Datei speichern. Alle Aktivitäten der Cmd-Eingabeaufforderung wurden über eine PoSH-Konsole ausgeführt. user340089 vor 9 Jahren 0
-1 für das Aufgeben der Frage, wodurch der Wert verringert wird barlop vor 8 Jahren 0

4 Antworten auf die Frage

1
xXhRQ8sD2L7Z

Es sieht so aus >, als hätte die Weiterleitung Ihre Batch-Datei im Unicode-Format verschlüsselt, wenn sie als ASCII-Datei vorliegen sollte. Verwenden Sie in Powershell Out-Fileanstelle der Weiterleitung wie folgt :

"echo test" | Out-File test.bat -Encoding ascii 

Wenn Sie die Batchdatei nach der folgenden Codierung ausführen, wird der Fehler reproduziert:

"echo test" | Out-File test.bat -Encoding unicode 
1
Mark Creamer

Hatte das gleiche Problem, dachte ich wäre verrückt.

Machen Sie Ihre Batch-Datei auf einem anderen Computer. Ich hatte das gleiche Problem beim Öffnen von Notepad und der normalen Eingabe der Befehle. Es hat mir immer die gleiche Nachricht gegeben. Nachdem ich die Batchdatei auf meinem lokalen Win7-Gerät neu erstellt hatte (nicht die alte Datei kopieren), sie auf meinen Win 2012R2-Server zurückkopiert hatte, funktionierte sie wie ein Champion.

Ich habe keine Ahnung warum, aber das hat in einer ähnlichen Situation für mich funktioniert. boot13 vor 5 Jahren 0
0
barlop

Sie haben wahrscheinlich irgendwo einen lustigen Charakter. Ich bin mir ziemlich sicher, dass Sie xxd -p blah.batdann lustige Charaktere in Ihrer Batch-Datei sehen werden.

Sie könnten dann darüber nachdenken, wie sie dorthin gekommen sind und sie entfernt haben .. Und das kann mit xxd und sed gemacht werden. Oder vielleicht anders, wenn Sie wissen, welche Charaktere sie sind.

Sie können xxd herunterladen, indem Sie VIM 7.X oder cygwin herunterladen

Oder Sie könnten einen Hex-Editor finden und die Batch-Datei in den Hex-Editor einfügen.

Sie sagen, Sie erstellen die Batch-Datei aus stdin. Nun, Sie könnten genau beschreiben, was Sie damit meinen, z. B. meinen Sie copy con blah.batSTRG-Z? Was auch immer Sie damit meinen, es enthält einige lustige Zeichen in der Datei.

hinzugefügt

Ich sehe, du sagst, dass du es mit Echo und Weiterleitung gemacht hast ..

Sie können dies für einige Fehlerbehebungen leicht vereinfachen

Versuchen type blah.bat

Wenn das einen lustigen Charakter zeigt, versuchen Sie echo H>blah.bates dann nach dem, was Sie geschrieben haben .. und sehen Sie, an welchem ​​Punkt Sie den lustigen Charakter erhalten.

Eine andere Sache, mit der Sie experimentieren können, ist die Eingabe- und Ausgabecodierung

versuche chcp. chcp 850 und chcp 65001 und sehen, ob Sie Unterschiede feststellen. chcp ändert sowohl die Eingabe- als auch die Ausgabecodierung, aber chcp zeigt nur die Eingabecodierung an.

Wenn Sie sich meine Antwort hier ansehen, lesen Sie bitte https://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 Sie können das verwenden, um Eingabe- und Ausgabecodierungen flexibler zu ändern als chcp. Oder Sie könnten einfach chcp verwenden, aber wenn Sie feststellen, dass chcp Sie bei der Fehlerbehebung einschränkt, können Sie chcpa versuchen.

Aber eines Ihrer besten Tools in Ihrer Problembehandlung wäre, wie erwähnt, ein Hex-Editor oder ein xxd. Und versuchen Sie, Ihre Linie noch weiter zu vereinfachen, wie vorgeschlagen.

Mit solchen Schritten können Sie feststellen, wo der Fehler liegt. Und kommentieren Sie, wenn Sie etwas hier oder weiter versuchen.

-1
Keltari

Echo verwendet keine Anführungszeichen. Nehmen Sie die doppelten Anführungszeichen heraus und es wird funktionieren.

echo echo hello > test.bat 

Echo sucht nach dem String nach dem Echo und dem Leerzeichen, die Anführungszeichen durchbrechen den String.

Mehr zum Echo .

Das Problem wurde dadurch nicht behoben. Eingegeben: `Echo Echo Yowzer> test.bat` lief als:`. \ Test.bat` und erhielt immer noch die gleiche Antwort wie oben. Wenn Sie die Datei in Notepad bearbeiten, wird immer noch eine Müllantwort zurückgegeben. Wenn ich die Datei jedoch von Anfang an im Editor erstellt / gespeichert habe, ist alles in Ordnung. Kann jemand das kopieren? user340089 vor 9 Jahren 0
seltsam. es hat für mich funktioniert. Keltari vor 9 Jahren 0
Konnten Sie das Problem, das ich hatte, wiederholen? Haben Sie das seltsame Ergebnis bei der Verwendung von Anführungszeichen oben gesehen? user340089 vor 9 Jahren 0
Ja. Ich entfernte die Anführungszeichen und es funktionierte wie beabsichtigt Keltari vor 9 Jahren 0
-1 Er sagte: "Warst du in der Lage, das Problem zu replizieren, das ich hatte?" Und das Problem, das er hatte, waren diese lustigen Charaktere. Und Sie antworteten "ja ...". Und aus seiner Frage geht klar hervor, und noch deutlicher aus seiner Antwort, dass das, was Sie von "die Zitate brechen die Zeichenfolge" sprechen, absolut und offensichtlich nicht das Problem ist barlop vor 8 Jahren 0