Batch file 通过命令结果进行批循环(命令位于其他文件夹中)

Batch file 通过命令结果进行批循环(命令位于其他文件夹中),batch-file,for-loop,Batch File,For Loop,我正在尝试循环使用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%comm

我正在尝试循环使用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
    )
  )
)
我猜这不是正确运行的,因为我需要以某种方式使用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

  • 您运行的命令需要单引号,因此使用反引号将命令括起来
  • 您正在读取文件,需要使用双引号,因为其中包含空格/特殊字符。双引号字符串作为直接字符串处理,需要
    usebackq
    指示它是文件名

如果以这种方式执行
for/?

结果是-
“C:\Program”未被识别为内部或外部命令,则可以看到指示的两种情况,可操作的程序或批处理文件。
需要运行的命令是-C:\program Files\My Folder\Command.exe/checkstatus Client machineFQDN检查上述解决方案后,结果是它获取-C:\program,而不是命令的其余部分。以下是更改为新更新答案后的结果-'“C:\Program Files\my folder\command.exe”未被识别为内部或外部命令、可操作程序或批处理文件。@morrtz,只有在调用的可执行文件不存在或无法启动时,我才能获得您指示的行为。您是对的,路径中缺少一个文件夹。感谢所有帮助,问题已解决:)