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

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

Я хочу использовать 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.

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

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

решение1

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

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

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

решение2

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

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

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

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

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

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

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

решение3

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

Связанный контент