Preciso obter o robocopy para excluir qualquer arquivo cujo caminho contenha um diretório com um nome específico. Por exemplo, "bar":
c:\foo\bar\a.txt
c:\bar\c.txt
d:\baz\bar\flub\d.txt
deve ser excluído, mas não
c:\foo\barf\b.txt
Aqui estão as coisas que tentei - cada uma das quais foi rejeitada por robocopy:
/XD \bar\
/XD *\bar\*
/XD *^\bar^\*
Alguma ideia?
Se você estiver tentando filtros de diretório diferentes, limpe sua pasta de destino entre as alterações!
Um problema para mim foi que eu não percebi que a opção de ignorar diretório também é aplicada às pastas de destino. Eu executei o robocopy
/MIR
e alterei o diretório de origem, e meu diretório de destino foi atualizado conforme o esperado. Então notei que tinha pastas de arquivo que eu não queria, então adicionei/XD archive
, mas minha pasta de destino ainda tinha pastas de arquivo!Depois de mexer com curingas e incluir / excluir os
\
, finalmente tentei excluir a pasta de destino e executar novamente o script - desta vez, não havia as pastas de arquivo morto! Aqui está o comando que eu estava executando, com os nomes de diretório alterados para proteger os inocentes:fonte
Sinto muito, mas de acordo com a documentação em https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy :
Portanto, isso significa especificamente que o curinga pode ser usado no sinalizador / xf, mas não no sinalizador / xd.
fonte