伟哥的博客

一个IT从业者

« | »

WINDOWS脚本编程-延迟环境变量扩充

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
)

该特性的启用方法有两种:

  1. 以/V:ON 参数启动CMD脚本解释器
  2. 在脚本中执行SETLOCAL ENABLEDELAYEDEXPANSION

最新回复

Comment Icon re: WINDOWS脚本编程-延迟环境变量扩充

it's me | 10/06/2008, 15:01

要延迟扩充的环境变量时,用!var!的格式,不能用%var%的格式。

SETLOCAL ENABLEDELAYEDEXPANSION
set FILE_FIX=unknown
IF EXIST user.dmp (
set FILE_FIX=%DATE%
echo !FILE_FIX!
)

发表评论

authimage

 
Accessible and Valid XHTML 1.0 Strict and CSS
Powered by pLog - Design by BalearWeb