我是靠谱客的博主 感性花卷,最近开发中收集的这篇文章主要介绍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

注意:

  1. 用()括起来的算同一个行,即括号内的会同时被预处理,如if,for后面的();
  2. Setlocal enabledelayedexpansion作用于脚本,可使用endlocal提前结束作用范围;

转载于:https://www.cnblogs.com/Mst5u/p/10483507.html

最后

以上就是感性花卷为你收集整理的Windows Bat脚本之变量延迟(Setlocal enabledelayedexpansion)的全部内容,希望文章能够帮你解决Windows Bat脚本之变量延迟(Setlocal enabledelayedexpansion)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部