Я пытаюсь запустить /MOVE
команду robocopy, но исключаю пару подкаталогов, указанных с /XD
флагом.
robocopy ".\CurrentDir" ".\NewDir" /XD ".\CurrentDir\SubDir1" ".\CurrentDir\SubDir2" /E /MOVE
К сожалению, он игнорирует эту /XD
опцию и перемещает все. Если я использую абсолютный путь для всего, он работает нормально, но мне нужно, чтобы он был гибким. Есть ли способ заставить его работать с относительными путями?
%CD%
переменную окружения. Пример:robocopy ".\CurrentDir" ".\NewDir" /XD "%CD%\CurrentDir\SubDir1" "%CD%\CurrentDir\SubDir2" /E /MOVE
Ответы:
Указанные папки
/XD
относятся к папкам (исключая), которые существуют в исходной папке, поэтому вы указываете только те имена папок, которые хотите исключить, без указания родительского отношения.то есть:
источник
Следующее может помочь - оно решает проблему относительного пути напрямую - но допускает многие исключающие каталоги и подкаталоги.
Если вы просто исключаете папки верхнего уровня - просто используйте имя папки - пример APC. Однако, если вы делаете подпапку - вам нужен весь путь. Путь должен полностью соответствовать исходному пути + путь к подпапке. Я проверил это многими различными способами, и это единственный способ, которым я смог заставить его работать. Этот формат пакетного файла / cmd также позволяет использовать пробелы в пути или именах файлов.
источник