我在Windows 7 cmd中工作。我写了几行代码来从一个非常大的目录树中复制某些文件。这是代码:
for /f "tokens=*" %a in ('dir "L:\Level1\Level2\Level3\\\*." /ad /b') do robocopy "L:\Level1\Level2\Level\%a\Level5\Level6\Level7" "c:\Destination\%a" /E /V /R:1 /W:1 /MT:32 /SEC
基本上,这会进入所有Level4文件夹(在Level3中)并复制在目录其余部分中找到的文件。
我遇到的问题是我的某些Level4文件夹实际上没有Level5 / Level6 / Level7路径。因此,每次循环到达其中一个文件夹时,它都会使循环崩溃。
我想修改上面的代码,以便循环只会跳过导致错误的任何文件夹,然后继续下一步。
我在cmd命令行上运行它。不批量。
我对cmd代码知之甚少。因此,如果您的答案清楚地解释了修改的语法应该是什么,我将不胜感激。我知道解决方案与“errorlevel”有关,但我对如何实现无能为力。
答案 0 :(得分:3)
使用robocopy
检查if exist
源文件夹状态,如下所示:
for /f "tokens=*" %a in ('dir "L:\Level1\Level2\Level3\\\*." /ad /b') do if exist "L:\Level1\Level2\Level\%a\Level5\Level6\Level7\nul" robocopy "L:\Level1\Level2\Level\%a\Level5\Level6\Level7" "c:\Destination\%a" /E /V /R:1 /W:1 /MT:32 /SEC
以更易阅读的形式:
for /f "tokens=*" %a in ('dir "L:\Level1\Level2\Level3\\\*." /ad /b') do ^
if exist "L:\Level1\Level2\Level\%a\Level5\Level6\Level7\nul" ^
robocopy "L:\Level1\Level2\Level\%a\Level5\Level6\Level7" ^
"c:\Destination\%a" /E /V /R:1 /W:1 /MT:32 /SEC
请注意folder\nul
条件。
NUL
是一个类似文件的对象,存在于任何现有文件夹中...