我通过谷歌世界进行了一次愉快的搜索以找到类似的问题,但是我找不到任何人在他们的FOR / F循环之外做事的例子,所以我不得不创造一个新的主题。
我正在使用FOR / F循环在参考文件中找到的每行执行一次Ruby Gem,它完美无缺。问题是,当它完成滚动浏览其参考文件并执行Ruby Gem正确的次数时,它将无法完成FOR / F循环之外的.CMD文件中的任何其他内容。
这是我的.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
easy.lst文件中包含两行数据。
循环工作正常,执行Ruby Gem并创建* .easy文件作为输出,但是,COPY命令永远不会执行。我可以用ECHO替换副本,或者实际上是任何东西,但它不会执行。
我无法看到我的FOR / F语法中缺少什么 - 任何想法都会窥视?
由于
答案 0 :(得分:10)
我认为scrapitalist
本身就是一个批处理文件,因此它会停止批处理文件,但是当FOR-loop被缓存时,它会工作到最后。
要解决此问题,您只需要一个call
作为前缀。
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