您的位置:首页 > 其它

setlocal enabledelayedexpansion 理解

2013-01-25 10:07 603 查看
@echo off

set ss=abc

echo %ss%

setlocal enabledelayedexpansion
set ss=ppp
echo %ss%
endlocal

echo %ss%
setlocal enabledelayedexpansion
echo !ss!
endlocal

pause


setlocal enabledelayedexpansion

endlocal

引起来的部分里所定义的变量相当于局部变量,而在他外面定义则可以理解为全局变量。

在第一个

setlocal enabledelayedexpansionset

ss=ppp

echo %ss%

endlocal

里面对SS进行了重新定义,因此在这个局部环境中,局部变量ss替代了全局变量ss,所以这个地方的echo输出为ppp

而紧接着的

echo %ss%

已经在endlocal外面了,因此他感受不到局部变量ss,只能感受到全局变量ss,因此输出仍然为abc

而在第二个

setlocal enabledelayedexpansion

echo !ss!

endlocal

中,并没有对ss进行重新定义,因为它就从全局变量中取值。局部环境中可以感受全局变量的值,而全局环境中并不能感受局部环境中的变量的值。与C语言是类似的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: