我有一份 robocopy 的工作,主要是复制C:\src
到D:\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>
尽可能使用通配符。以下行将排除
dir1
、dir2
等。robocopy C:\src D:\dst /COPY:DAT /E /XD dir*
下一行将排除
C:\src\this_dir
、C:\src\that_dir
、C:\src\test\subdir
等。robocopy C:\src D:\dst /COPY:DAT /E /XD *dir