批处理中的setlocal enabledelayedexpansion命令解释
这个命令是批处理中常用的命令,其功能为开启延迟变量,用法及作用如下。
1.用法
- 在cmd窗口或.bat/.cmd文件直接输入”setlocal enabledelayedexpansion“后回车
- 启用后引用变量变为”!变量名!”,但也可以使用原来的”%变量名%”,原因下文讲解
2.作用
注:此代码在cmd窗口作用不大,但在批处理文件执行时作用至关重要。
(1)为什么在cmd窗口作用不大?
C:\Users\HP>set 1=1
C:\Users\HP>echo %1%
1
C:\Users\HP>set 1=2
C:\Users\HP>echo %1%
2
通过上面的执行结果来看cmd窗口中的即使未启用延迟变量变量的值更新也是很及时的
(2)在文件里的作用
先创建一个txt文件,右键把文件拓展名改为bat或cmd
右键编辑文件,在文件内写入
@echo off
set 121=1
echo %121%
set 121=2
echo %121%
set 121=3
echo %121%
pause
双击运行该文件,结果如下
21
21
21
请按任意键继续. . .
可见即使把变量121的值赋值了多次,但是变量的值还是未更新
然后我们把”setlocal enabledelayedexpansion”加入到代码里面(注:要位于引用”!变量名!”之前),文件内容变为:
@echo off
setlocal enabledelayedexpansion
set 121=1
echo !121!
set 121=2
echo !121!
set 121=3
echo !121!
pause
再次运行
1
2
3
请按任意键继续. . .
这次变量的值就能快速的更新了
(3)启用延迟变量后用”%变量名%”会发生什么
首先我们创建一个txt(文本文件),并把后缀改为bat或cmd,右键编辑该文件,输入一下代码
@echo off
setlocal enabledelayedexpansion
set yemz=1
echo !yemz!
set yemz=2
echo !yemz!
set yemz=3
echo !yemz!
set yemz=4
echo %yemz%
set yemz=5
echo %yemz%
set yemz=6
echo %yemz%
pause
双击运行…
1
2
3
4
5
6
请按任意键继续. . .
可见用”!!”或”%%”效果一样
好了,本期的教程就到这里了,感谢阅读!