Robocopy - 从子目录中排除特定文件

Robocopy - 从子目录中排除特定文件

我想在执行清除操作的同时排除删除特定文件。特定文件位于源中不存在的子目录中。

来源:

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

根据这个答案

相关内容