7

我在谷歌的世界里进行了一次愉快的搜索,找到了与我类似的问题,但我找不到任何人在他们的 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 语法中缺少什么 - 有什么想法吗?

谢谢

4

1 回答 1

10

我想那scrapitalist是一个批处理文件本身,因此它会停止批处理文件,但由于 FOR 循环被缓存,它会工作到最后。

要解决这个问题,您只需要一个callas 前缀。

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
于 2012-06-15T11:46:56.207 回答