Я хочу использовать 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.
К сожалению, файлы в белом списке отбираются вручную и не могут быть отфильтрованы с помощью подстановочных знаков.
Есть ли способ обойти это?
В окнах есть ограничение на длину командной строки (я думаю, что это что-то вроде 2048 символов).
Вы должны создать файл задания с небольшим подмножеством указанного списка исключений (используя /save:filename
аргумент), чтобы получить синтаксис, отредактируйте файл, включив в него полный список, а затем используйте /job:filename
аргумент для запуска.
Для справки, здесь можно найти документацию по этому инструменту.
Оказывается, синтаксис файла задания robocopy не так уж и сложен.
Для вашей конкретной ситуации вы можете добиться желаемого, создав файл задания robocopy со следующим содержанием:
/XD
exclude1.ext
exclude2.ext
exclude3.ext
....
Если вы хотите сделать то же самое и для файлов, ваш файл задания robocopy будет выглядеть так:
/XD
exclude1.ext
exclude2.ext
exclude3.ext
....
/XF
file1.ext
file2.ext
file3.ext
....
Используя ту же логику, вы можете переместить любые другие параметры из командной строки в файл задания.
попробуйте использовать подстановочные знаки после / XF filename1 * .ext filename2 * .ext filename3 * .ext Это будет работать, только если вы знаете, что имя файла уникально во всей структуре. Вы можете изменить соглашение об именах файлов, которые хотите исключить, чтобы обойти это ограничение.