1

У меня есть текстовый файл, который имеет ~ 500 000 полных путей. Я хочу скопировать их на NAS один раз. Это около 1 ТБ данных. Должен ли я сделать zip-файл со всеми файлами или скопировать их по отдельности? Как я могу сделать либо автоматически?

1 ответ1

2

Вы можете сделать это с помощью команды оператора For из командной строки или пакетного сценария.

For /f %f in (list.txt) do xcopy "%f" \\NasName\dest [switches]

Типичные выключатели:

  • /C Продолжает копирование, даже если возникают ошибки.
  • /I Если место назначения не существует и копируется более одного файла, предполагается, что место назначения должно быть каталогом.
  • /H Копирует также скрытые и системные файлы.
  • /R Перезаписывает файлы только для чтения.
  • /Y Подавляет запрос на подтверждение перезаписи существующего файла назначения.

Выполните вышеуказанную команду и уйдите на несколько часов. Если пути являются надежными в вашем файле списка, замените %f на C:\path\to\source\%f

Не забывайте, что вам понадобятся привилегии для чтения файла, чтобы скопировать их, поэтому, если какие-либо ваши файлы находятся в ограниченных папках (например, в папках документа других пользователей), вам нужно будет запустить командную строку / командный файл от имени администратора. Также, если вы запустите это в пакетном файле, вам нужно будет заменить один % на %%


Если вы перечислите 500 000 файлов, это просто все файлы в c:\somepath вы можете просто использовать Robocopy вместо xcopy + for выписки

robocopy c:\somepath \\NasName\dest [switches]

Я бы порекомендовал следующие переключатели

  • /s Копирует подкаталоги. Обратите внимание, что эта опция исключает пустые каталоги.
  • /zb Использует режим перезапуска. Если доступ запрещен, эта опция использует режим резервного копирования.
  • /MT Создает многопоточные копии (работает только на Server 2008 R2 и Windows 7)
  • /LOG:<logfile> Записать результаты в файл вместо консоли (это повысит производительность /MT)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .