您的位置:首页 > 其它

通俗彻底解读批处理的延迟变量

2015-05-29 12:02 218 查看
先说环境变量

一个批处理可以看成是一个程序,它的环境变量就是自己的全局变量。操作系统可以看成是一个大程序,它的环境变量同样也是全局变量,只不过为了和程序的环境变量区别,就叫做全局环境变量了,既然为了区别,那么叫系统环境变量岂不是更好。

再说延迟变量

脚本语言需要解释器解释执行。批处理在解释执行时会以语句为单位读取代码。假如前面有一个变量a=1,这句当中的所有读取a的运算中,比如输出a,a都会先被替换成1,再执行。

还是上代码吧:

@echo off
set a=1
set a=2 & echo %a%
echo %a%
pause
输出:



说明了:

1. 执行器读取一条语句后会进行变量值替换。如果读取语句的前面还有其他改变这个变量的命令,就会导致读不到最新的值。

2. 写成一行和写成两行是有区别的。

注意:

因为for和if作为一个语句,后面可以跟许多命令,不管跟多少命令,它还是一条命令。

延迟变量

光看名字不能顾名思义。那么就换一个说法来描述:

开启延迟变量就是读取变量最新值。

记住这句话就行了,简单明了。它和c/c++中的volatile作用相同。

上代码

setlocal EnableDelayedExpansion
set a=1
set a=2 & echo !a!
echo %a%
pause
输出



注意,设置延迟变量后,变量读取时要用 !变量! 的形式,不用 %变量% ,不然还是读不到最新的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: