批量循环通过命令结果(命令在不同的文件夹中)

时间:2015-03-10 13:05:56

标签: batch-file for-loop

我正在尝试使用FOR / F循环执行命令的结果。

实际运行的命令 - C:\ Program Files \ my folder \ command.exe

%installdir%是C:\ Program Files \ my folder \

我运行的代码是 -

FOR /F "delims=, tokens=1,2" %%c in (results.txt) DO (
  if %%d EQU [something] (
    FOR /F "delims=: skip=2" %%e in ('%installdir%command.exe /checkstatus Client %%c') do (
      echo %%e %%f
    )
  )
)

我猜这是运行不正确,因为我需要以某种方式使用usebackq,但我没有设法这样做。 感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

FOR /F "delims=: skip=2" %%e in ('"%installdir%command.exe" /checkstatus ....
                                  ^         quotes        ^

如果您的命令包含空格,则需要引用它。

这个问题是,同时开始处理执行命令的cmd实例删除了一些双引号(我们添加的引号),最后我们得到一个新错误(参见{{1更多信息)

要解决此问题,您需要添加...更多报价。

cmd /?

时需要FOR /F "delims=: skip=2" %%e in ('""%installdir%command.exe" /checkstatus ... "') do .... quoted executable ^.......................^ quoted full command ^...........................................^
  • 您运行一个需要单引号的命令,因此您使用反引号来包含命令
  • 您正在阅读文件,需要使用双引号,因为它包含空格/特殊字符。双引号字符串作为直接字符串处理,需要usebackq表示它是文件名。

如果您执行usebackq

,则可以看到两种情况