setlocal enabledelayedexpansion 理解

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值