通俗彻底解读批处理的延迟变量
先说环境变量
一个批处理可以看成是一个程序,它的环境变量就是自己的全局变量。操作系统可以看成是一个大程序,它的环境变量同样也是全局变量,只不过为了和程序的环境变量区别,就叫做全局环境变量了,既然为了区别,那么叫系统环境变量岂不是更好。
再说延迟变量
脚本语言需要解释器解释执行。批处理在解释执行时会以语句为单位读取代码。假如前面有一个变量a=1,这句当中的所有读取a的运算中,比如输出a,a都会先被替换成1,再执行。
还是上代码吧:
@echo off set a=1 set a=2 & echo %a% echo %a% pause
输出:
说明了:
1. 执行器读取一条语句后会进行变量值替换。如果读取语句的前面还有其他改变这个变量的命令,就会导致读不到最新的值。
2. 写成一行和写成两行是有区别的。
注意:
因为for和if作为一个语句,后面可以跟许多命令,不管跟多少命令,它还是一条命令。
延迟变量
光看名字不能顾名思义。那么就换一个说法来描述:
开启延迟变量就是读取变量最新值。
记住这句话就行了,简单明了。它和c/c++中的volatile作用相同。
上代码
setlocal EnableDelayedExpansion set a=1 set a=2 & echo !a! echo %a% pause
输出
注意,设置延迟变量后,变量读取时要用 !变量! 的形式,不用 %变量% ,不然还是读不到最新的值。
本文来自博客园,作者:撬动未来的支点,转载请注明原文链接:https://www.cnblogs.com/pivotfuture/p/16297465.html
CSDN:撬动未来的支点,公众号:Qt未来工程师,网站:www.qtfuture.cn
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战