Délivrance:
xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y
fonctionne comme prévu. Pourtant:
xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:"Y:\...\exclude.txt"
renvoie une erreur:
Nombre de paramètres non valide
Ce qui se produit également lorsque les noms de chemin (contenant des espaces) ne sont pas entourés de guillemets. Ceci, en revanche, n'est pas le cas. Les chemins (modifiés pour la lisibilité) correspondent tous correctement. La syntaxe (selon Documentation produit - Xcopy ) est également correcte. Concernant le système d'exploitation est Windows XP Professional x32 SP3.
Pourquoi la deuxième cmd renvoie-t-elle une erreur et comment la résoudre? Je ne cherche pas d'alternatives à xcopy (robocopy etc.).
XCOPY est une ancienne commande remontant à l'époque du DOS. Il semble que l'option/EXCLUDE n'ait jamais été mise à jour pour prendre en charge les noms de fichiers longs. Ugh :
Si vous supprimez les guillemets, le texte après l'espace est interprété comme un paramètre supplémentaire et vous obtenez l'erreur "Nombre de paramètres non valide". Si vous conservez les guillemets, il les traite comme faisant partie du chemin d'accès et signale qu'il ne peut pas trouver le fichier.
Je pense que vous avez trois solutions possibles:
1) Utilisez les noms de dossier courts 8.3 dans votre chemin.
Bien sûr, cela ne peut pas fonctionner si votre volume a des noms courts désactivés.
2) Utilisez la commande SUBST pour créer un alias de lecteur pour votre chemin problématique.
subst Q: "Y:\path with spaces"
xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:Q:exclude.txt
subst Q: /d
Cela peut être un problème si vous ne connaissez pas une lettre de lecteur gratuite.
3) (mon préféré) Il suffit de PUSHD faire le chemin gênant et d'exécuter la commande à partir de là :-)
pushd "Y:\path with spaces"
xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:exclude.txt
popd
Voir --- (https://sevenx7x.wordpress.com/2009/01/02/xcopy-with-exclude-option-shows-cant-read-file/ et http://forums.majorgeeks.com/showthread.php?t=543 pour plus d'informations.
Le commutateur /EXCLUDE:file
N'exclura pas le fichier spécifié. Selon xcopy
référence de la commande :
/exclude:FileName1[+[FileName2][+[FileName3](…)]
Spécifie une liste de fichiers. Au moins un fichier doit être spécifié. Chaque fichier contiendra des chaînes de recherche avec chaque chaîne sur une ligne distincte du fichier. Lorsque l'une des chaînes correspond à une partie du chemin absolu du fichier à copier, ce fichier sera exclu de la copie.