@echo off
set a=4
set a=5 & echo %a%
pause
setlocal enabledelayedexpansion
set c=4
set c=5 & echo !c!
pause
批处理运行机制:批处理读取命令按行读取,某条命令行中的变量改变要到下一行才会生效。
当我们启用变量延迟:setlocal enabledelayedexpansion,并且变量使用 ! !
括起来,这时候会发现 c 输出为 5。命令解释器就不再是运行命令前先将变量读取出来再执行,而是当我们用到该变量的时候再去读该变量此时的值。