在 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!"
)
如果输出看起来正常,请删除最后两行的回声并调整复制命令。