bat-变量延迟

setlocal

开始批处理文件中环境改动的本地化操作,执行setlocal后的环境改动仅限于批处理文件,还原设置必须执行endlocal

bat处理机制

set a=1

按行读取,执行前先做预处理,将变量值扩展到实际值
set b=%a%
预处理时为,set b=1

if、for等括号内的内容,是当做一条语句来处理,而不是多条语句
if %a%==1 (
set a=2
echo %a%
)
预处理时为,set a=2 & echo 1

因此,需要使用变量延迟,确保前一条语句运行后再运行后一条语句

变量延迟

// 开启变量延迟
setlocal enabledelayedexpansion
// 关闭变量延迟
setlocal disabledelayedexpansion

变量要使用! !,不能用% %

举例

运行结果为 ECHO 处于关闭状态。
第三行预处理为set var2=1 & echo,相当于执行了echo,所以结果就会输出 ECHO 处于关闭状态。

@echo off 
set var1=1
set var2=%var1% & echo %var2%
pause

单独成行,先后运行,使用% %,运行结果为 1

@echo off 
set var1=1
set var2=%var1%
echo %var2%
pause

同时运行,添加变量延迟,使用!!,运行结果为 1

setlocal enabledelayedexpansion
@echo off 
set var1=1
set var2=%var1% & echo !var2!
pause
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值