J'ai besoin d'obtenir robocopy pour exclure tout fichier dont le chemin contient un répertoire avec un nom particulier. Par exemple, "bar":
c:\foo\bar\a.txt
c:\bar\c.txt
d:\baz\bar\flub\d.txt
doivent être exclus, mais pas
c:\foo\barf\b.txt
Voici les choses que j'ai essayées - dont chacune a été rejetée par robocopy:
/XD \bar\
/XD *\bar\*
/XD *^\bar^\*
Des idées?
Si vous essayez différents filtres de répertoire, assurez-vous d'effacer votre dossier de destination entre les modifications!
Un problème pour moi était que je ne savais pas que le commutateur Ignorer le répertoire était également appliqué aux dossiers de destination. J'avais exécuté robocopy avec
/MIR
et changé le répertoire source, et mon répertoire de destination a été mis à jour comme prévu. Ensuite, j'ai remarqué que j'avais des dossiers d'archives que je ne voulais pas, alors j'ai ajouté/XD archive
, mais mon dossier de destination contenait toujours des dossiers d'archives!Après avoir joué avec les caractères génériques et inclus / exclu les
\
s, j'ai finalement essayé de supprimer le dossier de destination et de relancer le script - cette fois, il n'avait pas les dossiers d'archives! Voici la commande que j'exécutais, avec les noms de répertoire modifiés pour protéger les innocents:la source
Je suis désolé, mais selon la documentation sur https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy :
Cela signifie donc spécifiquement que le caractère générique peut être utilisé dans l'indicateur / xf mais pas dans l'indicateur / xd.
la source