2012-06-15 15 views
7

Ho avuto una buona ricerca nel mondo di Google per trovare un problema simile al mio, ma non riesco a trovare alcun esempio di persone che fanno cose al di fuori del loro FOR/F loops e quindi sono rassegnato a creare un nuovo thread.Qualcosa dopo il ciclo DOS FOR/F non in esecuzione

Sto usando un ciclo FOR/F per eseguire una gemma Ruby una volta per riga che trova in un file di riferimento, che fa perfettamente. Il problema è che quando ha finito di scorrere il suo file di riferimento ed eseguito il Ruby Gem la giusta quantità di volte, non completerà qualcos'altro nel file .CMD al di fuori del ciclo FOR/F.

Ecco il mio codice .CMD:

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 

Il file easy.lst ha due linee di dati in essa contenuti.

Il ciclo funziona correttamente, l'esecuzione di Ruby Gem e la creazione di file * .easy come output, tuttavia, il comando COPY non viene mai eseguito. Posso sostituire la copia con un ECHO, o in realtà qualsiasi cosa, ma non verrà eseguita.

Non riesco a vedere cosa mi manca dalla sintassi FOR/F - qualsiasi idea fa capolino?

Grazie

+1

Posso suggerire una shell di tipo UNIX? La sintassi è molto più potente e molto più sicura. Sembra che Cygwin sia già installato, quindi perché non usare solo la shell bash che viene fornita con esso? – tdammers

+0

@tdammers è un buon suggerimento, ma è anche come suggerire la codifica in C# quando l'OP vuole assemblare, qualunque sia la ragione. –

risposta

10

Suppongo che scrapitalist è un file batch per sé, quindi, si ferma il file batch, ma come il ciclo for viene memorizzato nella cache, il lavoro fino alla fine.

Per risolvere questo è necessario un solo call come prefisso.

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 - Hai perfettamente ragione, questo ha risolto il problema. Cosa fastidiosa, l'ho provato con il comando 'Chiama', quindi ho dovuto fare un errore di sintassi in quel momento. Grrrr! Grazie molto! – user1458484

Problemi correlati