Ich versuche, den Befehl FOR in der Windows XP-Befehlszeile zu verwenden. Ich habe eine Datei temp.txt mit 3 Zeilen:
temp1
temp2
temp3
Und ich gebe den folgenden Befehl an der Eingabeaufforderung ein:
for /F %p in (temp.txt) do echo Testing %p
Nichts kommt zurück. Wenn ich den / F-Parameter entferne, ist die Ausgabe Testing temp.txt
.
Soweit ich feststellen kann, verwende ich den Befehl genau so, wie er von Microsoft dokumentiert ist . Ich habe meine Registrierung überprüft, um sicherzustellen, dass die Befehlserweiterungen aktiviert sind, und habe sogar eine neue Shell gestartet cmd /e:on
, um doppelt sicherzugehen.
Was mache ich falsch?
Ja, ich habe etwas falsch gemacht.
Die Datei temp.txt wurde nicht von Grund auf neu erstellt. Ich habe sie nur bearbeitet, um sie in meinen Testinhalt aufzunehmen. Leider habe ich die Datei beim ersten Erstellen mit einem UTF-8-Marker auf der Vorderseite gespeichert. Das Wiederherstellen der Datei als Klartext behebt das Problem.
quelle
temp.txt
in der Befehlszeile befinden? Ich kann mir keinen Grund vorstellen, warum es außerhalb davon nicht funktionieren würde.Antworten:
Ich vermute, dass dies das gewünschte Ergebnis ist:
Wenn ja, haben Sie andere Batch-Dateien getestet oder die Eingabe / Ausgabe umgeleitet? Wenn Sie dies als Teil eines größeren Projekts tun, haben Sie möglicherweise Trennzeichen oder den Skip-Parameter in den FOR-Befehl geändert? Ist es möglich, dass die Datei temp.txt nicht druckbare Zeichen enthält? Ich habe dies auf ein paar verschiedenen Computern zum Laufen gebracht, darunter ein 2k3 Server Std. box ... Ich kann nicht anders, als zu glauben, dass es Probleme mit Ihrer Eingabedatei gibt oder dass die Standardeinstellungen ohne Ihr Wissen festgelegt werden.
quelle
Anstatt mit zu testen
echo
, bei dem die Namen im Set unverändert bleiben (auch wenn die Datei nicht vorhanden ist), versuchen Sie Folgendestype
:Das wird dir zeigen, was die Shell "sieht". (Beachten Sie, dass sich / F mit einer nicht vorhandenen Datei darüber beschwert, dass die Datei nicht gefunden wurde, aber Sie haben möglicherweise mehr als eine temp.txt in der Nähe?)
quelle
copy con
-, aber ich sehe, Sie haben es herausgefunden. Die Stückliste schlägt wieder zu! Ich werde es in der psychischen Debugging-Liste noch ein wenig krachen lassen müssen.Der richtige Ansatz ist folgender:
Oder Sie könnten dies tun:
Eine weitere Variante ist:
Usw...
Wenn die Dateinamen Leerzeichen enthalten, müssen Sie 'usebackq' mit 'FOR / F' verwenden und die Dateinamen in doppelte Anführungszeichen setzen:
quelle
Ich habe Stunden damit verbracht. Sie müssen temp.txt durch 'temp.txt eingeben' ersetzen:
quelle