Answers:
失败的部分原因是在Robocopy引用目录时使用尾随\,这是一个禁止操作,因为Robocopy试图将其解释为转义字符。Robocopy几乎每个人都会以一种或另一种方式犯此错误。考虑到这一点,此示例将起作用:
/XD "\Bar"
如果要匹配更特定的文件夹结构(以免匹配其他子文件夹,则可以添加更多详细信息,例如:
/XD "\Foo\Bar"
/XD "C:\Foo\Bar"
如果您尝试使用其他目录过滤器,请确保在更改之间清除目标文件夹!
对我来说,一个陷阱是我没有意识到忽略目录开关也适用于目标文件夹。我使用robocopy /MIR
并更改了源目录,并且按预期更新了我的目标目录。然后我发现我有不需要的存档文件夹,所以我添加了/XD archive
,但是我的目标文件夹中仍然有存档文件夹!
在弄乱了通配符并包含/排除了\
s之后,我终于尝试删除目标文件夹并重新运行脚本-这次它没有存档文件夹!这是我正在运行的命令,更改了目录名称以保护无辜的人:
robocopy \\SERVER\Some\Folder\Path .\Some\Relative\Path /Copy:DAT /Mir /R:0 /W:1 /XD archive*
很抱歉,但是根据https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/robocopy中的文档:
/ xf <FileName> [...]排除与指定名称或路径匹配的文件。请注意,FileName可以包含通配符(*和?)。
/ xd <Directory> [...]排除与指定名称和路径匹配的目录。
因此,这特别意味着可以在/ xf标志中使用通配符,但不能在/ xd标志中使用通配符。