Ne peut pas exclure le chemin d'accès avec un espace (xcopy)

J'essaie d'utiliser xcopy /exclude:exclude.txt et l'un des chemins dans exclude.txt dispose d'un espace et il ne fonctionne pas. Existe-t-il des solutions pour cela?

Lecture à travers les sections pertinentes de l'aide xcopy

 /EXCLUDE:file1[+file2][+file3]... Specifies a list of files containing strings. Each string should be in a separate line in the files. When any of the strings match any part of the absolute path of the file to be copied, that file will be excluded from being copied. For example, specifying a string like \obj\ or .obj will exclude all files underneath the directory obj or all files with the .obj extension respectively. 

Nous pouvons voir que l'option d'exclusion ne fonctionne pas sur les chemins d'accès ou les noms de fichiers mais sur "les filtres". Pour illustrer cela, je vais essayer de donner un petit exemple. Imaginez ceci exclude.txt

 Unicorns Dolphins 

Cela filtrera tout fichier contenant des licornes ou des dauphins partout dans son nom. Par exemple, Dolphins.txt sera filtré, mais Ponys.txt sera bien.

Pour revenir à votre problème. La raison pour laquelle votre filtre ne correspond pas n'est pas à cause de l'espace dans le chemin. Par défaut, xcopy ne se souciera que du nom de fichier et non du chemin complet, tout filtre que vous avez inclu un chemin complet ne correspond pas et le fichier sera copié.

Vous pouvez modifier ce comportement de xcopy en fournissant le drapeau / f dans votre commande. Cela devrait résoudre le problème que vous voyez.

Modifier exclude.txt et placer des guillemets doubles autour du chemin qui contient un espace.

Une chose que j'ai faite dans cette situation est d'utiliser le «nom abrégé» (ancien nom DOS 8.3). Vous pouvez obtenir ce nom avec dir /x . Chaque version de Windows depuis Win 95 qui a permis des noms de fichiers longs a également permis ce nom alternatif 8.3 pour les fichiers / dirs.