davidyu720 | 10 六月, 2008 14:48
set FILE_FIX=unknown
set FILE_FIX=%DATE%
echo %FILE_FIX%
以上脚本执行结果将显示:
2008-06-10
如果将以上脚本包含于IF语句中:
set FILE_FIX=unknown
IF EXIST user.dmp (
set FILE_FIX=%DATE%
echo %FILE_FIX%
)
执行结果将显示为:
unknown
以上区别的原因在于“延迟环境变量扩充”特性。未启用该特性前,CMD读入完整的IF语句,同时将变量替换为变量的值,因此实际执行的是:
set FILE_FIX=unknown
IF EXIST user.dmp (
set FILE_FIX=%DATE%
echo unknown
)
该特性的启用方法有两种:
it's me | 10/06/2008, 15:01
| « | 八月 2008 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
要延迟扩充的环境变量时,用!var!的格式,不能用%var%的格式。
SETLOCAL ENABLEDELAYEDEXPANSION
set FILE_FIX=unknown
IF EXIST user.dmp (
set FILE_FIX=%DATE%
echo !FILE_FIX!
)