2012-06-15 17 views
7

He tenido una buena búsqueda en el mundo de google para encontrar un problema similar al mío, pero no puedo encontrar ningún ejemplo de personas haciendo cosas fuera de su FOR/F loops, así que me resigno a crear un nuevo hilo.Cualquier cosa después de DOS FOR/F ciclo no ejecutando

Estoy usando un ciclo FOR/F para ejecutar Ruby Gem una vez por cada línea que encuentre en un archivo de referencia, lo cual hace perfectamente. El problema es que cuando termina de desplazarse por su archivo de referencia y ejecuta Ruby Gem la cantidad correcta de veces, no completará nada más en el archivo .CMD fuera del ciclo FOR/F.

Aquí está mi código .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 

El archivo easy.lst tiene dos líneas de datos en ella.

El bucle funciona bien, ejecuta Ruby Gem y crea archivos * .easy como salida, sin embargo, el comando COPY nunca se ejecuta. Puedo reemplazar la copia con un ECHO, o de hecho cualquier cosa, pero no se ejecutará.

No puedo ver lo que me falta de mi sintaxis FOR/F - ¿Alguna idea de espiar?

Gracias

+1

¿Puedo sugerir un shell de estilo UNIX? La sintaxis es mucho más poderosa y mucho más sana. Parece que ya tienes instalado cygwin, ¿por qué no utilizar el shell bash que viene con él? – tdammers

+0

@tdammers es una sugerencia justa, pero eso también es como sugerir la codificación en C# cuando el OP quiere ensamblar, cualquiera que sea el motivo. –

Respuesta

10

supongo que scrapitalist es un archivo por lotes en sí, por lo que se detiene el archivo por lotes, pero a medida que el bucle FOR se almacena en caché, que trabajan para el final.

Para resolver esto, solo necesita un prefijo call como único.

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 - Tiene toda la razón, esto resolvió el problema. Algo molesto, lo había intentado con el comando 'Llamar', así que debo haber cometido un error de sintaxis en ese momento. Grrrr! ¡Muchas gracias! – user1458484

Cuestiones relacionadas