批处理延迟变量


在for循环中或if语句中多条命令都需要获取返回值等情况下,set变量显得无效,第二条命令开始变量的值都不会变。此处涉及批处理中的变量延迟问题
开启关闭方法
1. cmd下开启/关闭延迟环境变量

在cmd下开启或延迟环境变量用/v参数:

cmd /v:on //开启延迟环境变量

cmd /v:off //关闭延迟环境变量

2. 批处理中开启/关闭延迟环境变量

在批处理中开启或关闭延迟环境变量用setlocal命令:

setlocal EnableDelayedExpansion //开启延迟环境变量

setlocal DisableDelayedExpansion //关闭延迟环境变量

示例1:
@echo off & setlocal DisableDelayedExpansion
set aa=0
echo %aa%
if %aa%==0 (
set aa=1
echo %aa%
) else (
echo 输出结果2
)
pause>nul
输出结果是
0
0
开启了变量延迟后
@echo off & setlocal EnableDelayedExpansion
set aa=0
echo %aa%
if %aa%==0 (
set aa=1
echo !aa! rem这时如果仍然用百分号%来引用变量是不起作用的,必须用感叹号!,如!errorlevel!。
) else (
echo 输出结果2
)
pause>nul
输出结果
0
1
示例2:
for循环
@echo off&setlocal DisableDelayedExpansion
set a=2
echo a=%a%
for /L %%i in (4,1,10) do (
set a=%%i
echo a=%a%
)
pause>nul
结果
a=2
a=2
a=2
a=2
a=2
a=2
a=2
a=2

开启延迟变量
@echo off & setlocal EnableDelayedExpansion
set a=2
echo a=%a%
echo 开始进入for循环
for /L %%i in (4,1,10) do (
set a=%%i
echo a=!a!
)
pause>nul
结果
a=2
开始进入for循环
a=4
a=5
a=6
a=7
a=8
a=9
a=10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值