2012-06-15 6 views
7

Ich hatte eine sehr gute Suche durch die Welt von Google, um ein ähnliches Problem zu finden, aber ich kann keine Beispiele von Leuten finden, die Dinge außerhalb ihrer FOR/F loops und so bin ich resigniert um einen neuen Thread zu erstellen.Alles nach DOS FOR/F Schleife nicht ausgeführt

Ich verwende eine FOR/F-Schleife, um ein Ruby Gem einmal pro Zeile in einer Referenzdatei zu finden, was es perfekt macht. Das Problem ist, wenn es durch die Referenzdatei geblättert und das Ruby Gem die richtige Anzahl von Malen ausgeführt hat, wird es nichts anderes in der .CMD-Datei außerhalb der FOR/F-Schleife vervollständigen.

Hier ist mein .CMD Code:

FOR /F "tokens=1,2,3 delims=," %%a in (c:\cygwin\usr\work\easy.lst) do (
c:\ruby191\bin\scrapitalist website -u http://www.website.com/%%a/%%c/%%b.html -o  C:\cygwin\usr\autobets\work\%%b_%%c.easy 
) 
copy c:\cygwin\usr\work\*.easy c:\cygwin\usr\autobets\work\easy.imp 

Die easy.lst Datei hat zwei Zeilen von Daten enthält.

Die Schleife funktioniert einwandfrei, führt das Ruby Gem aus und erstellt * .easy-Dateien als Ausgabe, der Befehl COPY wird jedoch nie ausgeführt. Ich kann die Kopie durch ein ECHO ersetzen, oder tatsächlich irgendetwas, aber es wird nicht ausgeführt.

Ich kann nicht sehen, was ich von meiner FOR/F-Syntax fehlt - irgendwelche Ideen guckt?

Dank

+1

Darf ich eine UNIX-Shell vorschlagen? Die Syntax ist viel mächtiger und viel besser. Es sieht so aus, als ob du Cygwin bereits installiert hast, also warum nicht einfach die Bash-Shell benutzen, die mit ihr geliefert wird? – tdammers

+0

@tdammers, das ist ein fairer Vorschlag, aber das ist auch wie Coding in C# vorschlagen, wenn das OP Assembly, was auch immer der Grund sein könnte. –

Antwort

10

Ich nehme an, dass scrapitalist eine Batch-Datei selbst, daher hält es die Batch-Datei, sondern als die FOR-Schleife zwischengespeichert wird, es bis zum Ende arbeiten.

Um dies zu lösen, benötigen Sie nur eine einzige call als Präfix.

FOR /F "tokens=1,2,3 delims=," %%a in (c:\cygwin\usr\work\easy.lst) do (
    call c:\ruby191\bin\scrapitalist website -u http://www.website.com/%%a/%%c/%%b.html -o  C:\cygwin\usr\autobets\work\%%b_%%c.easy 
) 
copy c:\cygwin\usr\work\*.easy c:\cygwin\usr\autobets\work\easy.imp 
+0

jeb - Sie haben absolut Recht, das Problem wurde behoben. Ärgerlich, ich hatte es mit dem Befehl 'Call' versucht, also musste ich zu diesem Zeitpunkt einen Syntaxfehler gemacht haben. Grrrr! Danke vielmals! – user1458484