Exclure uniquement certains fichiers portant le même nom lors de la copie à l'aide de robocopy

15

J'ai une structure de répertoires comme celle-ci:

folder1\
    help.txt
    folder2\
        help.txt
    folder3\
        help.txt
    ...

Je souhaite copier le contenu du dossier1 à l'aide de robocopy . Par exemple:

robocopy folder1 destination /E

Je souhaite exclure le fichier help.text qui se trouve dans folder1 mais inclure les fichiers help.txt dans folder2, folder3 etc. Il peut également y avoir des fichiers nommés help.txt ailleurs dans la structure du répertoire, donc je ne veux pas avoir à codez les chemins d'accès aux fichiers à inclure.

Je peux utiliser la commande suivante pour exclure tous les fichiers nommés help.txt mais existe-t-il un moyen d'exclure simplement le fichier help.txt à la racine de folder1?

robocopy folder1 destination /E /XF help.txt
Daniel Richardson
la source

Réponses:

15

Vous devez inclure le chemin d'accès complet (y compris le lecteur) au fichier à exclure. Les chemins relatifs ne fonctionneront pas.

Cela marche:

robocopy folder1 destination /E /XF "c:\somedir\another dir\folder1\help.txt"

Cela ne veut pas:

robocopy folder1 destination /E /XF "folder1\help.txt"

Cela non plus:

robocopy folder1 destination /E /XF ".\folder1\help.txt"
En pause jusqu'à nouvel ordre.
la source
Vous pouvez exclure plusieurs fichiers comme çarobocopy folder1 destination /E /XF "c:\file1" "c:\file2"
schnatterer
@ Dennis-Williamson, Merci pour cette bonne réponse. Dommage qui ne fonctionne pas avec les caractères génériques: robocopy folder1 destination /E /XF "c:\somedir\another dir\folder1\help.txt*"conduit à une erreur.
Olivier Faucheux
Donc, après 2 heures d'essayer d'autres commandes, cela a fonctionné. Mille mercis!
Christopher Chipps
0

Je ne vois pas qu'il existe un moyen de le faire par nom de fichier. Vous pouvez définir un attribut sur le fichier que vous ne voulez pas copier que vous "savez" qu'il ne se trouve sur aucun autre fichier de l'arborescence source, puis utiliser / xa pour exclure les fichiers avec cet attribut.

À défaut, vous devrez utiliser un autre outil.

Cela fonctionnera:

echo folder1\help.txt > \temp\excl.txt
xcopy /E folder1 destination /EXCLUDE:\temp\excl.txt

En fait, si vous aviez une structure de répertoires qui ressemblait à ceci:

folder1\
  help.txt
  folder1\
    help.txt

cela exclurait probablement ces deux fichiers.

wfaulk
la source
Je vois que je me trompe.
wfaulk
0

Vous pouvez utiliser% CD% pour vous donner le répertoire actuel. Cela devrait vous aider à exclure des répertoires spécifiques. Plus d'aide est ici:

/programming//a/5274061

abc
la source