J'essaie d'exécuter une /MOVE
commande robocopy, mais j'exclus quelques sous-répertoires spécifiés avec l' /XD
indicateur.
robocopy ".\CurrentDir" ".\NewDir" /XD ".\CurrentDir\SubDir1" ".\CurrentDir\SubDir2" /E /MOVE
Malheureusement, il ignore l' /XD
option et déplace tout. Si j'utilise un chemin absolu sur tout, cela fonctionne bien, mais j'ai besoin de cela pour être flexible. Existe-t-il un moyen de le faire fonctionner avec des chemins relatifs?
%CD%
variable d'environnement. Exemple:robocopy ".\CurrentDir" ".\NewDir" /XD "%CD%\CurrentDir\SubDir1" "%CD%\CurrentDir\SubDir2" /E /MOVE
Réponses:
Les dossiers spécifiés pour
/XD
font référence aux dossiers (à exclure) qui existent dans le dossier source, vous ne spécifiez donc que le ou les noms de dossier que vous souhaitez exclure, sans spécifier de relation parent.c'est à dire:
la source
Ce qui suit peut aider - il résout directement le problème de chemin d'accès relatif - mais permet de nombreux répertoires et sous-répertoires d'exclusion.
Si vous excluez simplement les dossiers de niveau supérieur - utilisez simplement le nom du dossier - exemple APC. Cependant, si vous créez un sous-dossier - vous avez besoin du chemin complet. Le chemin doit correspondre entièrement au chemin source + chemin vers le sous-dossier. Je l'ai testé de nombreuses manières différentes et c'est la seule façon dont j'ai pu le faire fonctionner. Ce format de fichier batch / cmd permet également des espaces dans les noms de chemin ou de fichier.
la source