Batch file 通过命令结果进行批循环(命令位于其他文件夹中)
我正在尝试循环使用FOR/F的命令的结果 实际运行的命令-C:\Program Files\my folder\command.exe %installdir%是C:\Program Files\my文件夹\ 我运行的代码是-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 "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,只有在调用的可执行文件不存在或无法启动时,我才能获得您指示的行为。您是对的,路径中缺少一个文件夹。感谢所有帮助,问题已解决:)