使用robocopy进行复制时,仅排除一些具有相同名称的文件

我有这样的目录结构:

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

我想用robocopy复制folder1的内容。 例如:

 robocopy folder1 destination /E 

我想排除文件夹1中的help.text文件,但将help.txt文件包含在folder2,folder3等文件夹中。在目录结构中的其他地方也可能有文件help.txt,所以我不想编码要包含的文件的path。

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

 robocopy folder1 destination /E /XF help.txt 

您必须将完整path(包括驱动器)包含到要排除的文件中。 相对path不起作用。

这工作:

 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" 

我没有看到有任何方法通过文件名来做到这一点。 您可以在您不想复制的文件上设置一个属性,而您“知道”的文件不在源代码树中的任何其他文件上,然后使用/ xa排除具有该属性的文件。

否则,你将需要使用另一种工具。

这将工作:

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

实际上,如果你有一个像这样的目录结构:

 folder1\ help.txt folder1\ help.txt 

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

您可以使用%CD%为您提供当前目录。 这应该可以帮助您排除特定的目录。 更多的帮助在这里:

https://stackoverflow.com/a/5274061