Muszę pobrać robocopy, aby wykluczyć każdy plik, którego ścieżka zawiera katalog o określonej nazwie. Na przykład „pasek”:
c:\foo\bar\a.txt
c:\bar\c.txt
d:\baz\bar\flub\d.txt
należy wykluczyć, ale nie
c:\foo\barf\b.txt
Oto rzeczy, których próbowałem - z których każda została odrzucona przez robocopy:
/XD \bar\
/XD *\bar\*
/XD *^\bar^\*
Jakieś pomysły?
Jeśli próbujesz użyć różnych filtrów katalogów, pamiętaj o usunięciu folderu docelowego między zmianami!
Dla mnie problemem było to, że nie zdawałem sobie sprawy, że przełącznik ignorowania katalogu jest również stosowany do folderów docelowych. Uruchomiłem robocopy
/MIR
i zmieniłem katalog źródłowy, a mój katalog docelowy został zaktualizowany zgodnie z oczekiwaniami. Potem zauważyłem, że mam foldery archiwów, których nie chciałem, więc dodałem/XD archive
, ale w folderze docelowym nadal były foldery archiwów!Po zadziałaniu ze znakami wieloznacznymi i włączeniem / wyłączeniem
\
s, w końcu spróbowałem usunąć folder docelowy i ponownie uruchomić skrypt - tym razem nie miał folderów archiwum! Oto polecenie, które uruchomiłem, ze zmienionymi nazwami katalogów, aby chronić niewinnych:źródło
Przykro mi, ale zgodnie z dokumentacją pod adresem https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy :
Oznacza to w szczególności, że symbol wieloznaczny może być używany w flagi / xf, ale nie w flagi / xd.
źródło