[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理为何报错“已经达到最大的 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
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

评分人数

TOP

32层吗?索德斯累

TOP

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

TOP

返回列表