我正在尝试使用 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,但我还没有设法这样做。感谢对此的任何帮助!
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 /?
,您可以看到指示的两种情况