变量未在for循环中解析

时间:2015-12-22 21:36:47

标签: batch-file

我有以下批处理文件代码:

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!

任何人都有想法为什么他们在回声中解析但在最后一句话中没有?

1 个答案:

答案 0 :(得分:0)

根据您的评论:“系统无法找到指定的路径。”

我建议您引用您的值,因为我怀疑!a!和/或!b!可能包含空格:

"%run%" -i "%xml%" -j "!a!" -k "!b!"

您在命令窗口中看到的内容:

  

C:\run.exe -i C:\input.xml -j !a! -k !b!

可能是在延迟扩展之前对行进行了初始解析。我怀疑如果你将@ECHO OFF添加到脚本的最顶层,你就不会看到这个。