批处理延迟变量

变量延迟   setlocal EnableDelayedExpansion

在复合语句中才要使用延迟变量。也就是说在复合语句中或者外面是访问不到复合语句中定义的变量,只能通过变量延迟来解决

@echo off
for /l %%i in (1 1 10) do (
set var=%%i
echo %var%
)

结果:显示10个echo处于关闭状态。

分析:cmd把var的值当作复合语句之前的值来引用,

这就是因为没有开启 延迟变量 的缘故,cmd把var的值当作复合语句之前的值来引用,

@echo off
setlocal EnableDelayedExpansion
set var=abc
for /l %%i in (1 1 10) do (
set var=%%i
echo %var%
echo !var!
)
pause

结果为:abc 1 abc 2 abc 3……

分析:%var% 显示的结果是复合语句之前变量var的值,
而 !var! 显示的就是复合语句中即时得到的值。

猜你喜欢

转载自jaisok.iteye.com/blog/804610
今日推荐