找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35673|回复: 3

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

[复制链接]
发表于 2011-8-10 11:16:18 | 显示全部楼层 |阅读模式
执行的脚本目的是已经达到了,结果就是我想要的结果,但是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
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

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

评分

参与人数 1技术 +1 收起 理由
saogz + 1 谢谢!

查看全部评分

发表于 2011-8-11 16:26:15 | 显示全部楼层
32层吗?索德斯累
发表于 2015-8-29 10:35:47 | 显示全部楼层
楼主棒极了
真好遇到这个问题已经得到解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 16:05 , Processed in 0.054642 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表