setlocal enabledelayedexpansion 理解

来源:互联网 发布:淘宝oem化妆品 编辑:程序博客网 时间:2024/05/19 02:40
@echo offset ss=abcecho %ss%setlocal enabledelayedexpansionset ss=pppecho %ss%endlocalecho %ss%setlocal enabledelayedexpansionecho !ss!endlocalpause

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语言是类似的。