有是我们看到批处理文件中开始总是有这样的一个设置:
setlocal enabledelayedexpansion
这个有什么用?做什么的呢?
这个是批处理脚本中非常关键的一行命令,它的作用是: 启用延迟变量扩展(Delayed Expansion) 启用延迟展开,允许在 FOR 循环中正确使用变量。
如果不设置这行命令
set "var=hello"
for %%i in (1 2 3) do (
set "var=world"
echo !var!
)
执行这个批处理后,显示的是:
hello
hello
hello
!var! 没有正确展开,因为 var 在 FOR 循环中被覆盖了
setlocal enabledelayedexpansion
set "var=hello"
for %%i in (1 2 3) do (
set "var=world"
echo !var!
)
设置了之后的效果就变为这样的了:
word
word
word
是批处理脚本中非常关键的一行命令,用于启用延迟变量扩展,确保 !var! 在 FOR 循环中正确展开。

