我有一个简单的批处理脚本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
!逆天!