Robotik kopya ile joker dizin dışlamaları - tuhaf vaka


17

Yolu belirli bir ada sahip bir dizin içeren herhangi bir dosyayı hariç tutmak için robocopy almanız gerekir. Örneğin, "çubuk":

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

hariç tutulmalı, ancak olmamalıdır

c:\foo\barf\b.txt

İşte denediğim şeyler - her biri robokopi ile reddedildi:

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

Herhangi bir fikir?

Yanıtlar:


19

/ XD eşleşmelerini tam yol değil dizin adında gösterir. Yani ters eğik çizgileri eşleştirme konusunda endişelenmenize gerek yok.

Bu nedenle "bar" adı verilen dizinleri (yolun herhangi bir yerinde) hariç tutmak için basit / XD çubuğu çalışacaktır. Eğer varsa istedik "Barf" dışlamak için de, senin * / XD çubuğunu kullanabilirsiniz.

Bazen cevap düşündüğünüzden daha basittir.


4

Hatanın bir kısmı, Robocopy bir kaçış karakteri olarak yorumlamaya çalıştığından, hayır içeren bir dizine başvururken Robocopy'de bir iz \ kullanmaktadır. Hemen hemen herkes bu hatayı Robocopy ile bir şekilde yapar. Bunu akılda tutarak, bu örnek işe yarayacaktır:

/XD "\Bar"

Daha belirli bir klasör yapısıyla eşleşmek istiyorsanız (diğer alt klasörlerle eşleşmemek için, aşağıdaki gibi daha fazla ayrıntı ekleyebilirsiniz:

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

2
Joker karakter hariç tutma özelliği çalışmaz. Eğer denerseniz robocopy bir hata atar. Örneklerinizi test ettiniz mi?
user1751825

Yanlışlıkla örneğime bir yıldız işareti eklemem dışında kullandım ve kullanıyorum, bunun için sözdizimini / XF anahtarı ile karıştırıyorum. Yanıtımı düzelttim. Teşekkürler.
Micheal Espinola

1

Farklı dizin filtreleri deniyorsanız, hedef klasörünüzü değişiklikler arasında temizlediğinizden emin olun!

Benim için bir gotcha, dizin klasör anahtarını yoksay hedef klasörlerine de uygulandığını fark etmedi. /MIRKaynak dizin ile robocopy çalıştırdım ve değiştirdim ve hedef dizinim beklendiği gibi güncellendi. Daha sonra istemediğim arşiv klasörleri olduğunu fark ettim, bu yüzden ekledim /XD archive, ancak hedef klasörümde hala arşiv klasörleri vardı!

Joker karakterlerle \uğraştıktan ve s / hariç tuttuktan sonra , sonunda hedef klasörü silmeyi ve komut dosyasını yeniden çalıştırmayı denedim - bu sefer arşiv klasörleri yoktu! İşte masum korumak için dizin adları değiştirildi, ben çalıştırıyorum komut:

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

0

Üzgünüm, ancak https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy adresindeki belgelere göre :

/ xf <DosyaAdı> [...] Belirtilen adlarla veya yollarla eşleşen dosyaları hariç tutar. DosyaAdı'nın joker karakterler (* ve?) İçerebileceğini unutmayın.
/ xd <Directory> [...] Belirtilen ad ve yollarla eşleşen dizinleri hariç tutar.

Bu özellikle joker karakterin / xf bayrağında kullanılabileceği, ancak / xd bayrağında kullanılamayacağı anlamına gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.