批处理文件用ENABLEDELAYEDEXPANSION来在循环中使用复杂的多条指令

For循环也可以使用()来执行多条指令,比如

FOR /L %%i in (1,1,20) DO

echo %%i

echo %%i

)

 

但是这条指令是有问题的:

 
FOR /L %%i In (1,1,20) DO (

echo %%i

set /A Modular = %%i %% 2

if %Modular% == 0 set InstallPath=C:\Program Files\AliBrowser

if %Modular% == 1 set InstallPath=C:\Program Files\AliBrowser.new

)
 

 

因为bat在处理环境变量时是一开始就完全替换,所以在这个for语句中不能用set命令。

要在for语句中使用set命令,就必须先执行下面的命令,来启动环境变量的延时扩展:

setlocal ENABLEDELAYEDEXPANSION。

启动完成了之后在引用环境变量时不应该用%%,而应该改成!!,如下所示:

 
FOR /L %%i In (1,1,20) DO (
echo %%i
set /A Modular = %%i %% 2
if !Modular! == 0 set InstallPath=C:\Program Files\AliBrowser
if !Modular! == 1 set InstallPath=C:\Program Files\AliBrowser.new
)

 

 

文章转载自:http://www.cnblogs.com/georgepei/archive/2012/03/15/2398297.html

关于延迟环境变量扩展可参考如下网址:

http://blog.sina.com.cn/s/blog_4ad042e50100ovyl.html

你可能感兴趣的:(bat,延时扩展)