1. 实例:
1. 未设置环境变量延迟:
@echo off
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo If you see this, it worked
)
echo %VAR%输出结果:
after
2. 设置环境变量延迟:**
@echo off
setlocal enabledelayedexpansion
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)
echo %VAR%
endlocal注意区别是:
- 用setlocal enabledelayedexpansion和endlocal设置了局部且延迟环境变量区域 输出结果
If you see this, it worked
after
2. 作用:
在复合语句中,只有执行到了复合语句中的对应命令,对应的变量名才会被替换
3. 关于!的问题
在延迟环境变量区域 没有转义的!只能用于调用环境变量 如果想要打印!或者使用!运算符,需要用两个^^进行转义,详见bat 转义字符