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

[文件操作] 批处理setlocal为何提示达到最大递归层?

  1. @echo off&setlocal enableDelayedExpansion
  2. cd/d "D:\Source"
  3. for /d %%a in (*) do (
  4.         set "a=%%a"
  5.     for /d %%b in ("D:\Test\!a:~0,2!\!a:~2,2!\!a!") do (
  6.     set "b=%%b"
  7.     xcopy /c/q/i/s/e/k/r/h/y "%%b" "D:\Backup\%date:~0,10%%d%\!a!")
  8.         xcopy /c/q/i/s/e/k/r/h/y "%%a" "D:\Test\!a:~0,2!\!a:~2,2!\!a!"
  9. )
  10. pause
  11. @echo off&setlocal enableDelayedExpansion
  12. cd/d "D:\Source1"
  13. for /d %%a in (*) do (
  14.         set "a=%%a"
  15.     for /d %%b in ("D:\Test\!a:~0,2!\!a:~2,2!\!a!") do (
  16.     set "b=%%b"
  17.     xcopy /c/q/i/s/e/k/r/h/y "%%b" "D:\Backup\%date:~0,10%%d%\!a!")
  18.         xcopy /c/q/i/s/e/k/r/h/y "%%a" "D:\Test\!a:~0,2!\!a:~2,2!\!a!"
  19. )
  20. pause
复制代码
以上代码大致有十几段重复的,就是不同的文件夹,写在一个bat里面。

然后,我在每个setlocal结束后,加入一个endlocal,目前没有报错,请问这样有副作用么?

最多32层,
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

本帖最后由 batman 于 2011-3-30 15:26 编辑

估计这段代码是楼主自己连抄代写下来的,既然知道for嵌套,为什么还要写下十几段重复的代码,多一个for嵌套不就解决了吗,即使是要这样重复,变量延迟也只要在最前面开启一次就可以了,没必要每段都写一个setlocal enabledelayedexpansion吧!
***共同提高***

TOP

参考:批处理中特殊字符的几种处理方法
http://bbs.bathome.net/thread-1224-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

无聊,补充一下吧,在FOR中用SETLOCAL一般要和ENDLOCAL一起用。没有必要就不要用那么多的延时
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

返回列表