Board logo

标题: [文本处理] [已解决]批处理为何报错“已经达到最大的 setlocal 递归层”? [打印本页]

作者: saogz    时间: 2011-8-10 11:16     标题: [已解决]批处理为何报错“已经达到最大的 setlocal 递归层”?

执行的脚本目的是已经达到了,结果就是我想要的结果,但是CMD窗口会提示“已经达到最大的 setlocal 递归层” 不知道是怎么回事,请各位大侠指点!
脚本如下:
  1. @echo off
  2.    for /f "tokens=1,2 delims==" %%i in (users.txt) do (
  3.    echo %%j >.tmp && set /p a=<.tmp
  4.    ping/n 1 127.1>nul
  5.    setlocal enabledelayedexpansion
  6.    findstr /I /c:!a:~0,9! ssreport.txt >.tmp && (
  7.         set /p var=<.tmp
  8.         echo !var! >>date.txt
  9.   )
  10. )
  11. del .tmp
  12. pause
复制代码

作者: CrLf    时间: 2011-8-10 11:27

setlocal 最多递归 32 层,超过此限制则报错,所以有两个建议:
  1. 少在循环内多次使用 setlocal
  2. 非要在循环内 setlocal 的话,记得及时 endlocal,要保留的变量可以通过 for /f...in ("str=string") do endlocal&set %%a 来保留
复制代码

作者: Hello123World    时间: 2011-8-11 16:26

32层吗?索德斯累
作者: wikou    时间: 2015-8-29 10:35

楼主棒极了
真好遇到这个问题已经得到解决了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2