使用批量脚本将文件从一个文件夹移动到具有相同层次结构和文件夹名称的另一个文件夹?

时间:2013-03-18 07:43:14

标签: batch-file directory hierarchy move

因此,我希望将所有已转换文件夹下的文件从主Source文件夹移动到具有相同层次结构的另一个Output文件夹。

Source
   -done
   -converted
   -folder1
      -done
      -converted
      -folder11
         -done
         -converted
   -folder2
      -done
      -converted

Output
   (files from converted folder)
   -folder1
      (files from converted folder)
      -folder11
         (files from converted folder)
   -folder2
      (files from converted folder)

我是批处理脚本的新手,所以如果你能以某种方式帮助我,我将非常感激。 谢谢!

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET source=c:\sourcedir
SET destroot=c:\destdir
SET cdtl=0
:loploop
SET /a cdtl+=1
FOR /f "tokens=%cdtl%*delims=\" %%i IN ("%source%") DO IF NOT "%%j"=="" GOTO loploop
FOR /f "delims=" %%i IN (
    ' dir /b/s/ad "%source%\converted" '
    ) DO CALL :movedest "%%~dpni%"
)
GOTO :eof

:movedest
SET destdir=%~1
FOR /f "tokens=%cdtl%*delims=\" %%d IN (%1) DO SET destdir=%destroot%\%%e
ECHO MD "%destdir%" 2>NUL
ECHO MOVE /y "%~1\*.*" "%destdir%\"
GOTO :eof

倒数第二行中的ECHO只显示提议的操作。在您确认了要执行的操作后,只需删除ECHO关键字即可执行此操作。

请注意/y命令中的MOVE开关将覆盖文件的任何现有目标版本。