2012-03-30 3 views
0

Ich bin neu zu schreiben Batch-Dateien. Ich versuche folgendes zu tun.verschachtelt For-Schleife in Batch-Datei Fehler: Do war zu diesem Zeitpunkt unerwartet

Zeile für Zeile aus der Datei namens list.txt lesen, die zwei Token hat, die räumlich getrennt sind, und in der nächsten for-Schleife bin ich Token und sende diese Tokens als Parameter an ein anderes Skript.

FOR /F %%i IN (C:\list.txt) DO 

FOR /F "tokens=1,2 delims= " %%A IN (%%i) DO 
winscp.com /script=C:\myscript1.txt /parameter %%A C:\%%B 

Aber ich bekomme den folgenden Fehler. Do war zu dieser Zeit nicht zu erwarten.

Kann jemand erklären, was ich vermisse.

Dank

Antwort

1

Unabhängig von dem bereits gelösten Problem, können Sie die Token-Trennung in den gleichen FüR dass die Datei lesen erreichen. Außerdem haben FOR-Befehle Leerzeichen als Standardtrennzeichen, sodass delims= " nicht benötigt wird. Das ist:

FOR /F "tokens=1,2" %%A IN (C:\list.txt) DO (
    winscp.com /script=C:\myscript1.txt /parameter %%A C:\%%B 
) 
+0

perfekt. Vielen Dank – javaMan

2

Batch-Dateien ist nicht freie Form und vielen Leerraum ist von Bedeutung. Wie in diesem Fall, wo Sie alles in einer Zeile schreiben könnten, aber Sie können es nicht über mehrere Zeilen verteilen.

Eine weitere Möglichkeit ist ausdrücklich Blöcke verwenden:

FOR /F %%i IN (C:\list.txt) DO (
    FOR /F "tokens=1,2 delims= " %%A IN (%%i) DO (
    winscp.com /script=C:\myscript1.txt /parameter %%A C:\%%B 
) 
) 
+0

Ich habe versucht, alles in eine Zeile zu setzen. Auch es hat nicht funktioniert – javaMan

+0

Haben Sie wirklich versucht? Der Code, den ich dir gegeben habe, funktioniert hier. – Joey

+0

Hallo Joey, es tut mir leid. Es funktionierte. Aber ich bekomme einen anderen Fehler. In meiner Datei habe ich nur eine Zeile "good boy" und ich habe den Body innerhalb der zweiten for-Schleife als echo %% B geändert. Ich bekomme etwas wie gut ist nicht als Befehl erkannt – javaMan

Verwandte Themen