批处理中的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
请按任意键继续. . .

可见用”!!”或”%%”效果一样

好了,本期的教程就到这里了,感谢阅读!

类似文章