在 Windows 中,如何从每个目录复制特定的子目录?

在 Windows 中,如何从每个目录复制特定的子目录?

在 Windows 中,如何复制来源目的地,使用目录过滤器。过滤器应该如下所示:*\app\src这意味着:对于每个来源子文件夹(“每个”表示匹配*) 找到子文件夹app\src并将其复制到目的地保留文件夹结构。

我试过 robocopy 但是它说错误:无效参数 #3:“\应用程序\源\“*:

robocopy C:\Projects C:\backup  *\app\src\

怎么做?(不一定在 robocopy 中)

答案1

我会使用批处理文件,

  • 因为递归/s目录只能有一个名称
  • findstr 用于仅匹配以两个目录结尾的行
  • 在找到的目录字符串中,基本名称与目标名称交换以形成正确的目标文件夹名称。

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion

Set "Base=C:\Projects\"
Set "Dest=C:\backup\"
Set "Dir1=app"
Set "Dir2=src"

For /f "delims=" %%A in (
  'Dir /B/S/AD "%Base%\%Dir2%" ^|findstr /LEI "\%Dir1%\%Dir2%" '
) Do (
  Set "CopyTo=%%A"
  Set "CopyTo=!CopyTo:%Base%=%Dest%!\"
  If not Exist "!CopyTo!" Echo MD "!CopyTo!"
  Echo robo/x/copy "%%~fA\*" "!CopyTo!"
)

如果输出看起来正常,请删除最后两行的回声并调整复制命令。

相关内容