Копирование дерева каталогов в Windows
Мне нужно скопировать полное дерево каталогов (или рекурсивное копирование) с файлами bat на windows. В системах *nix я использую аргумент -R в команде копирования, например так:
cp -R fromDir toDir
и это сделало работу. Я не смог найти ничего похожего в окнах "man pages" команды copy.
Спасибо!
6 ответов
Копирование не обрабатывает рекурсию. Используйте вместо этого robocopy. На Windows 2008 это уже там и в пути. На Windows 2000 и 2003 он находится в комплекте ресурсов. Вам понадобятся флаги / S /Z /ETA.
/ S рекурсия /Z перезапускаемый узел /ETA подскажите, сколько времени займет текущий файл (необязательно)
Параметр /s в XCOPY будет обрабатывать подкаталоги (кроме пустых).
Я бы использовал Robocopy /E /COPYALL /MIR /ETA /LOG:FILE.log /TEE "SOURCE DIR" "DESTINATION DIR"
Пример: robocopy.exe / E / COPYALL / MIR / ETA /LOG:C:\copy.log / TEE "C: \ SourceDirectory \\" "C: \ DestinationDirectory \\"
/ E: копировать подкаталоги, включая пустые.
/ COPYALL: копирует все флаги безопасности и временные метки в файлы
/MIR: сделает точную копию источника. Так что если вы скопируете его один раз, а затем скопируете через второй раз, он будет обрабатывать удаления вместе с новыми файлами.
/ ETA: показать предполагаемое время прибытия скопированных файлов.
/ Log: создает файл журнала
/ TEE: вывод в окно консоли, а также файл журнала.
Есть много разных вариантов для Robocopy, если вы делаете /? для более продвинутого использования.
Вы также можете использовать версию GUI: http://technet.microsoft.com/en-us/magazine/2006.11.utilityspotlight.aspx
cpx.exe из проекта utx поддерживает рекурсивное копирование и рекурсивные символы подстановки для простого и мощного выбора файлов для копирования.
Я предлагаю xcopy /mir [from] [to], если вы хотите сохранить права доступа.