使用 robocopy 复制时仅排除一些同名文件

使用 robocopy 复制时仅排除一些同名文件

我有一个这样的目录结构:

folder1\
    help.txt
    folder2\
        help.txt
    folder3\
        help.txt
    ...

我想使用复制文件夹1的内容机器人复制。 例如:

robocopy folder1 destination /E

我想要排除folder1 中的 help.text 文件,但是包括folder2、folder3 等中的 help.txt 文件。目录结构中的其他位置可能还有名为 help.txt 的文件,所以我不想对要包含的文件的路径进行硬编码。

我可以使用以下命令排除所有名为 help.txt 的文件,但是有没有办法仅排除 folder1 根目录中的 help.txt 文件?

robocopy folder1 destination /E /XF help.txt

答案1

您必须包括满的要排除的文件的路径(包括驱动器)。相对路径不起作用。

这有效:

robocopy folder1 destination /E /XF "c:\somedir\another dir\folder1\help.txt"

这不:

robocopy folder1 destination /E /XF "folder1\help.txt"

以下情况同样如此:

robocopy folder1 destination /E /XF ".\folder1\help.txt"

答案2

我觉得没有办法通过文件名做到这一点。您可以为不想复制的文件设置一个属性,而您“知道”源树中的其他文件都没有这个属性,然后使用 /xa 排除具有该属性的文件。

但是,如果失败了,您将需要使用其他工具。

这将起作用:

echo folder1\help.txt > \temp\excl.txt
xcopy /E folder1 destination /EXCLUDE:\temp\excl.txt

实际上,如果你有一个如下所示的目录结构:

folder1\
  help.txt
  folder1\
    help.txt

它可能会排除这两个文件。

答案3

您可以使用 %CD% 来获取当前目录。这应该可以帮助您排除特定目录。更多帮助在这里:

https://stackoverflow.com/a/5274061

相关内容