DOS FOR / F循环后没有执行任何操作

时间:2012-06-15 11:28:32

标签: batch-file cmd dos

我通过谷歌世界进行了一次愉快的搜索以找到类似的问题,但是我找不到任何人在他们的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语法中缺少什么 - 任何想法都会窥视?

由于

1 个答案:

答案 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