xcopy — ошибка циклического копирования с исключением файла

Я пытаюсь исключить папку из xcopy, чтобы избежать ошибки циклического копирования, мой скрипт делает это..

xcopy c:\test c:\test\myfolder\tmp /EXCLUDE:c:\test\myfolder\exclude.txt /E

В моем файле exclude.txt есть это.

c:\test\myfolder
\myfolder\

Но это все еще дает мне ошибку циклического копирования, где я ошибаюсь?


person fightstarr20    schedule 04.07.2018    source источник
comment
Попробуйте скопировать куда-нибудь за пределы того места, откуда вы копируете.   -  person Mark Setchell    schedule 04.07.2018
comment
Это прямо противоположно тому, чего я пытаюсь добиться :) Мне нужно скопировать в то же место   -  person fightstarr20    schedule 04.07.2018
comment
Я предлагал это, чтобы посмотреть, исчезнет ли сообщение об ошибке. Я подозреваю, что xcopy не самая умная программа, и она спотыкается сама о себя. Это был тест, а не постоянное решение.   -  person Mark Setchell    schedule 04.07.2018
comment
XCOPY проверяет, является ли целевой каталог подкаталогом исходного каталога, не принимая во внимание записи в файле списка исключений. Возможно, вы могли бы обойти эту проблему с помощью subst Z: c:\test\myfolder\tmp, xcopy.exe c:\test Z:\ /EXCLUDE:c:\test\myfolder\exclude.txt /E и subst Z: /D (не проверено мной).   -  person Mofi    schedule 04.07.2018
comment
Как насчет использования robocopy? как 2_   -  person aschipfl    schedule 04.07.2018
comment
Robocopy идеально подошёл, спасибо за совет!   -  person fightstarr20    schedule 04.07.2018
comment
@Mofi, твой умный subst подход работает отлично, я только что проверил!   -  person aschipfl    schedule 04.07.2018


Ответы (2)


Как уже указал Mofi в своем комментарий, параметр /EXCLUDE xcopy рассматривается слишком поздно. Кроме того, эта функция очень плохая - см. этот ответ или этот мой ответ (бесстыдная самореклама...).

Позвольте мне порекомендовать вместо этого использовать robocopy, который поддерживает хорошие параметры исключения :

robocopy "C:\test" "C:\test\myfolder\tmp" /XD "C:\test\myfolder" /E
person aschipfl    schedule 04.07.2018

Следуя совету aschipfl в комментариях, я решил эту проблему, используя RoboCopy со следующим...

robocopy C:\test C:\test\myfolder\tmp /XD myfolder
person fightstarr20    schedule 04.07.2018