回复 6# cjiabing
去请教了一下万能的寒夜版主,现在终于搞明白了,endlocal 必须和 setlocal 在一层中,call :test 就好比调用一个“子进程”,这个“子进程”继承了“父进程”的环境,但是本身并不存在 setlocal,所以在标签中 endlocal 只能和标签中的 setlocal 相互作用,做个试验就明白了:- @echo off
- :test
- set /a n+=1
- echo %n%
- setlocal enabledelayedexpansion
- if %n%==33 echo setlocal 上限 32 层,若递归到 32 层以上仍不出错,则证明不同级的 setlocal 相互独立&pause
- call :test
复制代码 以前也没注意过,现在才知道有这回事... |