我是靠谱客的博主 感性花卷,最近开发中收集的这篇文章主要介绍Windows Bat脚本之变量延迟(Setlocal enabledelayedexpansion),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
先看一段代码:
@echo off
set var1=6
set var2=%var1%&echo %var2%
pause
执行后的结果为:Echo处于关闭状态
刚看到这个结果后一脸懵逼,经过一番百度了解到原来Windows批处理处理机制是按行读取,每行执行前先做预处理(类似%var%都会被扩展到实际值),这就自然在执行第三行前已经被预处理成了:
set var2=6&echo
我们知道当单独输入echo,后面什么都不加的情况下是输出当前echo的开关状态,代码首行用了@echo off命令,这里自然是显示:Echo处于关闭状态。
好在Windows批处理提供了变量延迟机制(在代码前加入:Setlocal enabledelayedexpansion语句),即延迟变量扩展,这样在执行的时候还是:
set var2=%var1%&echo %var2%
不过这里有个规定,即在使用Setlocal enabledelayedexpansion时要对延迟变量使用!var!格式而不是%var%,完整代码:
@echo off&Setlocal enabledelayedexpansion
set var1=6
set var2=%var1%&echo !var2!
pause
这样代码执行结果输出:6
注意:
- 用()括起来的算同一个行,即括号内的会同时被预处理,如if,for后面的();
- Setlocal enabledelayedexpansion作用于脚本,可使用endlocal提前结束作用范围;
转载于:https://www.cnblogs.com/Mst5u/p/10483507.html
最后
以上就是感性花卷为你收集整理的Windows Bat脚本之变量延迟(Setlocal enabledelayedexpansion)的全部内容,希望文章能够帮你解决Windows Bat脚本之变量延迟(Setlocal enabledelayedexpansion)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复