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

Batch Loop through command result (command in a different folder)

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

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

%installdir% 是 C:\Program Files\my 文件夹\

我 运行 的代码是 -

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
    )
  )
)

我猜这 运行ning 不正确,因为我需要以某种方式使用 usebackq,但我还没有成功。 感谢对此的任何帮助!

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

如果您的命令包含空格,您需要将其加引号。

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

要解决它,您需要添加...更多引号。

FOR /F "delims=: skip=2" %%e in ('""%installdir%command.exe" /checkstatus ... "') do ....
        quoted executable          ^.......................^ 
        quoted full command       ^...........................................^

时您将需要usebackq
  • 你运行一个命令里面需要单引号,所以你用反引号把命令括起来
  • 您正在读取一个文件,需要使用双引号,因为它包含 spaces/special 个字符。双引号字符串作为直接字符串处理,需要usebackq表示是文件名

如果你执行 for /?

你可以看到这两种情况