我想在执行清除操作的同时排除删除特定文件。特定文件位于源中不存在的子目录中。
来源:
folder1\
file1.txt
目的地:
folder1\
file1.txt
folder2\
dontdelete.txt
delete.txt
如果我使用:
Robocopy C:\Source C:\Destination /e /purge /xf dontdelete.txt
然后 Robocopy 将删除包含该文件的 folder2\,因此本质上仍然删除 dontdelete.txt 文件。
Source : C:\Source\
Dest : C:\Destination\
Files : *.*
Exc Files : dontdelete.txt
Options : *.* /V /L /S /E /DCOPY:DA /COPY:DAT /PURGE /R:1000000 /W:30
----------------------------------------------------------------------------
0 C:\Source\
1 C:\Source\folder1\
*EXTRA Dir -1 C:\Destination\folder1\folder2\
*EXTRA File 0 delete.txt
*EXTRA File 0 dontdelete.txt
same 0 file1.txt
如果我使用:
Robocopy C:\Source C:\Destination /e /purge /xd folder2 /xf dontdelete.txt
那么 Robocopy 根本不会从 folder2 中查找应该清除的文件。
Source : C:\Source\
Dest : C:\Destination\
Files : *.*
Exc Files : dontdelete.txt
Exc Dirs : folder2
Options : *.* /V /L /S /E /DCOPY:DA /COPY:DAT /PURGE /R:1000000 /W:30
----------------------------------------------------------------------------
0 C:\Source\
1 C:\Source\folder1\
*named dir -1 C:\Destination\folder1\folder2\
same 0 file1.txt
我也尝试过使用包括文件在内的完整路径,但输出没有区别。
答案1
提及目标文件的完整路径以将其排除在清除之外。因此,而不是
Robocopy C:\Source C:\Destination /e /purge /xf dontdelete.txt
使用:
Robocopy C:\Source C:\Destination /e /purge /xf C:\Destination\folder1\folder2\dontdelete.txt
这适用于 和/purge
。/mir
因此/e /purge
可以在命令中将其替换为/mir
,因为它们本质上是相同的。因此命令可以是:
Robocopy C:\Source C:\Destination /mir /xf C:\Destination\folder1\folder2\dontdelete.txt