Comment utiliser robocopy avec un grand nombre de fichiers exclus?

10

Je veux utiliser robocopy pour déplacer un grand nombre de fichiers, à l'exception de ceux qui sont dans une liste blanche. La liste blanche contient environ 150 fichiers de noms différents. Lorsque je copie et colle les noms de fichiers de la liste blanche dans la ligne de commande (à l'aide du /xfparamètre), robocopy tronque la liste.

c:\test> robocopy src dest *.ext /xf exclude1.ext exclude2.ext exclude3.ext ... exclude 299.ext exclude300.ext

Résulte en:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows

-------------------------------------------------------------------------------

  Started : Fri May 24 14:09:31 2013

   Source : C:\test\src\
     Dest : C:\test\dest\

    Files : *.ext

Exc Files : exclude1.ext
            exclude2.ext
            exclude3.ext
            ....
            ....
            exclude200.ext
            exclude201.ext
            exclu

et alors:

'exclude250.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude251.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude252.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude253.ext' is not recognized as an internal or external command,
operable program or batch file.

Malheureusement, les fichiers de la liste blanche sont triés sur le volet et ne peuvent pas être filtrés par des caractères génériques.

Y a-t-il un moyen de contourner ceci?

Singe violet flou
la source

Réponses:

13

Il y a une limite sur la longueur de la ligne de commande (je pense que c'est quelque chose comme 2048 caractères) dans Windows.

Vous devez générer un fichier de travail avec un petit sous-ensemble de la liste d'exclusion spécifiée (à l'aide de l' /save:filenameargument) pour obtenir la syntaxe, modifier le fichier pour inclure la liste complète, puis utiliser l' /job:filenameargument pour l'exécuter.

Pour référence, la documentation de cet outil est disponible ici.

Falcon Momot
la source
0

Il s'avère que la syntaxe du fichier de travail robocopy n'est pas si compliquée.

Pour votre situation spécifique, vous pouvez obtenir ce que vous voulez en créant un fichier de travail robocopy avec le contenu suivant:

/XD
exclude1.ext
exclude2.ext
exclude3.ext
....

Si vous souhaitez également faire de même pour les fichiers, votre fichier de travail robocopy ressemblera à ceci:

/XD
exclude1.ext
exclude2.ext
exclude3.ext
....

/XF
file1.ext
file2.ext
file3.ext
....

En utilisant la même logique, vous pouvez déplacer toutes les autres options de la ligne de commande vers le fichier de travail.

Fara Importanta
la source
0

essayez d'utiliser des caractères génériques après / XF filename1 * .ext filename2 * .ext filename3 * .ext Cela ne fonctionnera que si vous savez que le nom de fichier est unique dans toute la structure. Vous pouvez modifier la convention de dénomination des fichiers que vous souhaitez exclure pour contourner cette limitation.

Tryp
la source