我有一个简单的批处理脚本test.bat,它通过命令行参数进行迭代:

@echo off
set prefix=C:\Program Files\MyProg
for %%x in (%*) do (
    echo %prefix%
)

此版本的脚本在cmd.exe中可以正常运行:
C:\>test a b
C:\Program Files\MyProg
C:\Program Files\MyProg

但是,如果我将批处理文件修改为具有不同的prefix值,请添加(x86):
set prefix=C:\Program Files (x86)\MyProg

脚本失败:
C:\>test a b
\MyProg was unexpected at this time.

这悲剧!我该如何解决这个问题?

最佳答案

通过EnableDelayedExpansion启用 !prefix! 可解决此问题:

@echo off
set prefix=C:\Program Files (x86)\MyProg
setlocal EnableDelayedExpansion
for %%x in (%*) do (
    echo !prefix!
)
endlocal

!逆天!

10-08 00:06