本帖最后由 hanyeguxing 于 2011-4-25 11:34 编辑
对于:setlocal-endlocal
每运行一次setlocal将当前位置(本地环境变量位置,也就是命令解释器PSP中2C、2D字节所标记的环境段地址)的环境变量复制到临时位置,并将新变量继续写到当前位置,变量就是这么继承的...
运行endlocal运行时就清除当前位置所有变量,并将对应临时位置的变量复制回来。
这样,无论set还是其他命令(setlocal-endlocal除外),读写的都是本地环境变量位置里的变量
.............................................以上个人观点,哪天有人发现错了,记得不要拍砖。。。
测试:- @echo off
- for /l %%a in (0,1,4) do set #%%a=%%a
- setlocal enableDelayedExpansion
- for /l %%a in (5,1,9) do set #%%a=%%a
- set #
- pause
- endlocal
复制代码
注意,内存分析时,批处理停在 pause 这条命令上,即没有执行 endlocal 呢...... |