2012-02-09 3 views
4

Мне нужно скопировать несколько каталогов из одного места в другое. Итак, будут несколько операторов xcopy, один за другим.Параллельная копия с использованием xcopy

Количество файлов в каждой папке огромно. Есть ли способ, с помощью которого я могу запускать эти операторы xcopy параллельно? Один из вариантов, о котором я могу думать, - вызвать каждый xcopy в отдельном командном файле и вызвать эти пакетные файлы, используя @start вместо @call.

Есть ли другая альтернатива?

ответ

6

Вы можете запустить xcopy напрямую, например start xcopy [parameters]. Это позволяет запускать много экземпляров xcopy параллельно.

Кстати: Вы пробовали robocopy? Он включен во все последние версии Windows и предлагает больше возможностей (а иногда и производительности), чем xcopy.

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

+0

Я не пробовал использовать Robocopy. Он использует '/ MT [: number]' right? На самом деле, мне нужно сделать это на Windows XP SP3, поэтому нужно явно получить Robocopy. Однако я не полностью понял его использование '/ MT'. Не могли бы вы рассказать? –

+2

robocopy по умолчанию уже использует 8 потоков для выполнения некоторых своих операций параллельно. Это означает, что вы можете использовать robocopy для копирования всех файлов каталога параллельно. Если вы указали '/ MT: 100', например, robocopy будет копировать до 100 файлов параллельно. Я бы не рекомендовал это делать - 8 - это много. Поэтому, если вы действительно выбрали robocopy вместо xcopy, просто назовите его последовательно. Он скопирует первый каталог параллельно, затем второй каталог и так далее. – Simon

+0

Можете подтвердить комментарий Симона. Я измерил ROBOCOPY из массивного удаленного каталога с выходом сборки с использованием '/ MT:% NUMBER_OF_PROCESSORS%' против '/ MT: 100', а последний выполнял в среднем _ ** на 66% быстрее ** _ на четырехъядерном процессоре i5- 6500. Хотел бы я знать об этом уровне гибкости давным-давно! –

Смежные вопросы