我有以下批处理文件代码:
set run=C:\run.exe
set xml=C:\input.xml
setlocal enabledelayedexpansion
for /R %1 %%i in (*.bin) DO (
set a=%%i
set b=!a:foo=bar!
echo !a!
echo !b!
%run% -i %xml% -j !a! -k !b!
)
问题在于,尽管来自echo !a!
和echo !b!
的显示消息是正确的,但!a!
和!b!
作为run.exe的参数未在最后解析句子,在命令窗口中显示为
C:\run.exe -i C:\input.xml -j !a! -k !b!
任何人都有想法为什么他们在回声中解析但在最后一句话中没有?
答案 0 :(得分:0)
根据您的评论:“系统无法找到指定的路径。”
我建议您引用您的值,因为我怀疑!a!
和/或!b!
可能包含空格:
"%run%" -i "%xml%" -j "!a!" -k "!b!"
您在命令窗口中看到的内容:
C:\run.exe -i C:\input.xml -j !a! -k !b!
可能是在延迟扩展之前对行进行了初始解析。我怀疑如果你将@ECHO OFF
添加到脚本的最顶层,你就不会看到这个。