使用 Robocopy 排除许多文件和文件夹

使用 Robocopy 排除许多文件和文件夹

我有一份 robocopy 的工作,主要是复制C:\srcD:\dst

问题是,其中有很多目录C:\src我想排除(例如开发项目、存储库等的输出目录),这意味着我有一个这样的 robocopy 命令:

robocopy C:\src D:\dst /COPY:DAT /E /XD <dir1> /XD <dir2> ... /XD <dirN>

但是当我添加要排除的最新目录时,Windows 抱怨命令太长!有什么办法吗?

答案1

这个问题之前已经在这里回答过了:

https://serverfault.com/questions/510482/how-do-i-use-robocopy-with-a-large-number-of-excluded-files

简而言之,通过运行 robocopy 命令创建一个作业文件,其中仅包含一些要排除的文件夹

robocopy src dst /S /XD skipdir /save:rcjob

并编辑创建的文件。在此文件中,您可以每行输入一个要排除的文件夹,而不受命令行缓冲区长度的限制。
然后使用修改后的作业文件运行 robocopy:

robocopy /job:rcjob

答案2

有几种方法可以减少命令的长度。据我所知,没有办法允许无限制的排除。

请尝试以下操作:

  • 您可以在单个 后列出多个目录/XD

    robocopy C:\src D:\dst /COPY:DAT /E /XD <dir1> <dir2> ... <dirN>
    
  • 尽可能使用通配符。以下行将排除dir1dir2等。

    robocopy C:\src D:\dst /COPY:DAT /E /XD dir*
    

    下一行将排除C:\src\this_dirC:\src\that_dirC:\src\test\subdir等。

    robocopy C:\src D:\dst /COPY:DAT /E /XD *dir
    

相关内容