Как использовать robocopy с большим количеством исключенных файлов?

10

Я хочу использовать robocopy для перемещения большого количества файлов, кроме тех, которые находятся в белом списке. Белый список содержит около 150 файлов с разными именами. Когда я копирую и вставляю имена файлов белого списка в командную строку (используя /xfпараметр), robocopy усекает список.

c:\test> robocopy src dest *.ext /xf exclude1.ext exclude2.ext exclude3.ext ... exclude 299.ext exclude300.ext

Результаты в:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows

-------------------------------------------------------------------------------

  Started : Fri May 24 14:09:31 2013

   Source : C:\test\src\
     Dest : C:\test\dest\

    Files : *.ext

Exc Files : exclude1.ext
            exclude2.ext
            exclude3.ext
            ....
            ....
            exclude200.ext
            exclude201.ext
            exclu

а потом:

'exclude250.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude251.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude252.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude253.ext' is not recognized as an internal or external command,
operable program or batch file.

К сожалению, файлы в белом списке выбираются вручную и не могут быть отфильтрованы по групповым символам.

Есть ли способ обойти это?

Нечеткая фиолетовая обезьяна
источник

Ответы:

13

Существует ограничение на длину командной строки (я думаю, что это примерно 2048 символов) в Windows.

Вы должны сгенерировать файл задания с небольшим подмножеством указанного списка исключений (используя /save:filenameаргумент), чтобы получить синтаксис, отредактировать файл, включив в него полный список, а затем использовать /job:filenameаргумент для его запуска.

Для справки, документацию по этому инструменту можно найти здесь.

Сокол Момот
источник
0

Оказывается, синтаксис файла задания Robocopy не такой сложный.

Для вашей конкретной ситуации вы можете достичь желаемого, создав файл задания robocopy со следующим содержимым:

/XD
exclude1.ext
exclude2.ext
exclude3.ext
....

Если вы захотите сделать то же самое для файлов, то ваш файл задания robocopy будет выглядеть так:

/XD
exclude1.ext
exclude2.ext
exclude3.ext
....

/XF
file1.ext
file2.ext
file3.ext
....

Используя ту же логику, вы можете переместить любые другие параметры из командной строки в файл задания.

Фара Импортанта
источник
0

попробуйте использовать подстановочные знаки после / XF filename1 * .ext filename2 * .ext filename3 * .ext Это будет работать, только если вы знаете, что имя файла уникально во всей структуре. Вы можете изменить соглашение об именовании файлов, которые вы хотите исключить, чтобы обойти это ограничение.

Tryp
источник