ロボコピーによるワイルドカードディレクトリの除外—奇妙なケース


16

特定の名前のディレクトリをパスに含むファイルを除外するには、robocopyを取得する必要があります。たとえば、「bar」:

c:\foo\bar\a.txt
c:\bar\c.txt
d:\baz\bar\flub\d.txt

除外する必要がありますが、

c:\foo\barf\b.txt

ここに私が試したものがあります-それぞれがロボコピーによって拒否されました:

/XD \bar\
/XD *\bar\*
/XD *^\bar^\*

何か案は?

回答:


18

完全なパスではなく、ディレクトリ名で/ XDが一致することが判明します。したがって、実際にバックスラッシュの一致を心配する必要はありません。

したがって、「bar」と呼ばれるディレクトリ(パス内の任意の場所)を除外するには、単純な/ XDバーが機能します。「barf」も除外したい場合は、/ XD bar *を使用できます。

時々、答えはあなたが思っているより簡単です。


4

失敗の一部は、Robocopyがエスケープ文字として解釈しようとするため、ディレクトリを参照するときにRobocopyで末尾の\を使用していることです(これは不可です)。Robocopyを使用すると、ほとんどの人が何らかの形でこの間違いを犯します。それを念頭に置いて、この例は動作します:

/XD "\Bar"

より具体的なフォルダー構造に一致させたい場合(他のサブフォルダーに一致しないように、次のように詳細を追加できます:

/XD "\Foo\Bar"
/XD "C:\Foo\Bar"

2
ワイルドカードの除外は機能しません。試みると、Robocopyはエラーをスローします。あなたの例をテストしましたか?
user1751825

誤ってアスタリスクをサンプルに追加したという事実を除いて、私はそれを使用しました。回答を修正しました。ありがとう。
ミシェルエスピノーラ

1

別のディレクトリフィルターを試行する場合は、変更の間に宛先フォルダーをクリアするようにしてください!

私にとっての落とし穴は、ディレクトリの無視スイッチが宛先フォルダにも適用されることに気付いていなかったことです。/MIRソースディレクトリを使用してrobocopyを実行し、変更しました。宛先ディレクトリは期待どおりに更新されました。それから、不要なアーカイブフォルダーがあることに気づいたので、を追加しました/XD archiveが、宛先フォルダーにはまだアーカイブフォルダーがありました!

ワイルドカードをいじり、\s を含めたり除外した後、最終的に宛先フォルダーを削除してスクリプトを再実行しました-今回はアーカイブフォルダーがありませんでした!以下は、無実を保護するためにディレクトリ名を変更した、実行中のコマンドです。

robocopy \\SERVER\Some\Folder\Path .\Some\Relative\Path /Copy:DAT /Mir /R:0 /W:1 /XD archive*

0

申し訳ありませんが、https//docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopyのドキュメントによると:

/ xf <FileName> [...]指定した名前またはパスに一致するファイルを除外します。FileNameにはワイルドカード文字(*および?)を含めることができることに注意してください。
/ xd <Directory> [...]指定した名前とパスに一致するディレクトリを除外します。

したがって、これは特に、/ xfフラグでは使用できますが、/ xdフラグでは使用できないことを意味します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.