第1个回答 2019-12-19
变量延时问题现象,是对一条复合语句而言的
批处理代码,你观察一下如下现象:
1、未开启变量延时
set str=AAA
if %str%==AAA (
set str=BBB
echo %str%
)
echo %str%
运行结果是:
AAA
BBB
2.开启变量延时后
setlocal enabledelayedexpansion ::开启变量延时功能
set str=AAA
if %str%==AAA (
set str=BBB
echo !str! ::得用一对!!号
echo %str% ::还是一对%%号
)
echo !str!
echo %str%
运行结果:
BBB
AAA
BBB
BBB
即,一条复合语句,对变量的解释动作是同时进行的,第二次赋值动作在时间上,其实是晚了一步,来不及,被抢先了。