Windows 批处理(bat) 通俗彻底解读批处理的延迟变量

先说环境变量

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


再说延迟变量

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

还是上代码吧:

@echo off
set a=1
set a=2 & echo %a%
echo %a%
pause

输出:
在这里插入图片描述
说明了:

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

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

注意:

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


延迟变量 setlocal EnableDelayedExpansion

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

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

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

上代码:

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

输出:
在这里插入图片描述
注意,设置延迟变量后,变量读取时要用 !变量! 的形式,不用 %变量% ,不然还是读不到最新的值。


本文来自博客园,作者:撬动未来的支点
原文链接:https://www.cnblogs.com/pivotfuture/p/16297465.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值