首页 > 解决方案 > 批处理脚本:\MyProg 此时出乎意料

问题描述

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

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

标签: windowsbatch-file

解决方案


启用EnableDelayedExpansion解决!prefix!此问题:

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

!难以置信的!


推荐阅读