标题: [文件操作] 批处理setlocal为何提示达到最大递归层? [打印本页]
作者: purrpig 时间: 2011-3-30 13:59 标题: 批处理setlocal为何提示达到最大递归层?
- @echo off&setlocal enableDelayedExpansion
- cd/d "D:\Source"
- for /d %%a in (*) do (
- set "a=%%a"
- for /d %%b in ("D:\Test\!a:~0,2!\!a:~2,2!\!a!") do (
- set "b=%%b"
- xcopy /c/q/i/s/e/k/r/h/y "%%b" "D:\Backup\%date:~0,10%%d%\!a!")
- xcopy /c/q/i/s/e/k/r/h/y "%%a" "D:\Test\!a:~0,2!\!a:~2,2!\!a!"
- )
- pause
-
- @echo off&setlocal enableDelayedExpansion
- cd/d "D:\Source1"
- for /d %%a in (*) do (
- set "a=%%a"
- for /d %%b in ("D:\Test\!a:~0,2!\!a:~2,2!\!a!") do (
- set "b=%%b"
- xcopy /c/q/i/s/e/k/r/h/y "%%b" "D:\Backup\%date:~0,10%%d%\!a!")
- xcopy /c/q/i/s/e/k/r/h/y "%%a" "D:\Test\!a:~0,2!\!a:~2,2!\!a!"
- )
- pause
复制代码
以上代码大致有十几段重复的,就是不同的文件夹,写在一个bat里面。
然后,我在每个setlocal结束后,加入一个endlocal,目前没有报错,请问这样有副作用么?
作者: wc726842270 时间: 2011-3-30 14:11
最多32层,
作者: batman 时间: 2011-3-30 15:24
本帖最后由 batman 于 2011-3-30 15:26 编辑
估计这段代码是楼主自己连抄代写下来的,既然知道for嵌套,为什么还要写下十几段重复的代码,多一个for嵌套不就解决了吗,即使是要这样重复,变量延迟也只要在最前面开启一次就可以了,没必要每段都写一个setlocal enabledelayedexpansion吧!
作者: Batcher 时间: 2011-3-30 20:17
参考:批处理中特殊字符的几种处理方法
http://bbs.bathome.net/thread-1224-1-1.html
作者: wc726842270 时间: 2011-3-30 22:13
无聊,补充一下吧,在FOR中用SETLOCAL一般要和ENDLOCAL一起用。没有必要就不要用那么多的延时
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |