【发布时间】:2015-10-26 19:30:28
【问题描述】:
我有E:\Backups\code\Hazard\test1 ... testn 之类的文件夹
在这些测试文件夹中类似于E:\Backups\code\Hazard\test1\it0 ... itn
根文件夹是运行代码的E:\Backups\code。
以下代码在每个子文件夹上运行,并将summary.yml 从it0 文件夹复制到最新的it(n) 文件夹。
为什么代码只针对test1 文件夹运行然后挂起?
setlocal ENABLEDELAYEDEXPANSION
set root=%cd%
for /D %%X in (%root%\*) do (
echo %%X
cd %%X
for /D /r %%b in (*) do (
cd %%b
echo %%b
for /f "tokens=1,2,*" %%a in ('robocopy . . file.txt /l /nocopy /is /s /nc /ns /ts /ndl /njh /njs ^| sort /r') do set "lastFolder=%%~dpc" & goto :done
:done
echo Last folder : %lastFolder%
for /d %%j in (*) do (
if /i "%%~nj"=="it0" COPY %%j\summary.yml %lastFolder%
)
cd ..
)
)
【问题讨论】:
-
GOTO 破坏了 FOR 结构。
-
感谢 Mofi 和 Squashman 的回复。 @Mofi Yesh 在我的代码中,从 for 到的所有内容都在一行上,就在我粘贴到此站点时,它拆分为多行。我是批处理编程的新手,很难像在 VBA 或其他与批处理中那样映射编码风格。我会尽量按照你的建议去做。谢谢。
-
@Mofi,不,从 for 到 do 的所有内容都不需要在同一行。
-
有人可以帮我将代码拆分成所需的子程序,以便代码按预期工作吗?我正在阅读一些关于它的教程,因为我是这个批处理编程的新手。谢谢
-
帮自己一个忙,改用真正的编程语言。这会更好地利用你的时间。
标签: batch-file goto delayedvariableexpansion