使用 robocopy 排除通配符目录——奇怪的情况

Jes*_*sse 19 robocopy

我需要让 robocopy 排除路径包含具有特定名称的目录的任何文件。例如,“酒吧”:

c:\foo\bar\a.txt
c:\bar\c.txt
d:\baz\bar\flub\d.txt
Run Code Online (Sandbox Code Playgroud)

应该排除,但不排除

c:\foo\barf\b.txt
Run Code Online (Sandbox Code Playgroud)

以下是我尝试过的东西——每一个都被 robocopy 拒绝了:

/XD \bar\
/XD *\bar\*
/XD *^\bar^\*
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jes*_*sse 24

原来 /XD 与目录名称匹配——而不是完整路径。所以你实际上不必担心匹配反斜杠。

因此,要排除名为“bar”的目录(路径中的任何位置),一个简单的/XD 栏将起作用。如果您也排除“barf”,您可以使用 /XD bar*。

有时答案比你想象的要简单。


Mic*_*ola 5

部分失败是在引用目录时在 Robocopy 中使用尾随 \ - 这是一个禁忌 - 因为 Robocopy 试图将其解释为转义字符。使用 Robocopy 时,几乎每个人都以某种方式犯过这个错误。考虑到这一点,这个例子将起作用:

/XD "\Bar"
Run Code Online (Sandbox Code Playgroud)

如果要匹配更具体的文件夹结构(以免匹配其他子文件夹,可以添加更多详细信息,例如:

/XD "\Foo\Bar"
/XD "C:\Foo\Bar"
Run Code Online (Sandbox Code Playgroud)

  • 通配符排除不起作用。如果您尝试,Robocopy 会抛出错误。你测试过你的例子吗? (2认同)