Robocopy не копирует корневую папку и ее временную метку

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

Так, скажем, я хочу скопировать C:/Brushes

Robocopy скопирует все подкаталоги и файлы в папку назначения, но не саму папку Brushes со всеми связанными с ней атрибутами и отметкой времени.

Вы понимаете, о чем я спрашиваю? Это довольно просто, а в Robocopy, похоже, нет такой опции. Люди уже задавали этот вопрос на различных форумах, но, насколько я понимаю, никто так и не ответил на него.

Попробуйте md D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes из командной строки, подставив правильные пути.

Комментарии (1)

Если вы объедините /IF :: Include the following Files. с /E :: copy subdirectories, including Empty ones., вы получите (близкий к желаемому) эффект:

C:\Temp\Robocopy Source Root>robocopy . "C:\Temp\Robocopy Destination" /E /IF "Brushes*"
Комментарии (2)

Robocopy не предназначен для этого. **Однако есть способ.

Корневая папка содержит, допустим, 50 файлов и 40 папок. Вам нужна только папка X (но вам также нужна отметка времени и даты).

ROBOCOPY c:\ d:\ /XF 50 root file names c:\boot.ini c:\bla.txt etc. /XD c:\windows c:\drivers c:\temp etc. /S /E /SEC /DCOPY:T

Параметр /DCOPY:T указывает, что нужно сохранить временные метки папок. /XF указывает, какие файлы НЕ копировать, /XD указывает, какие папки НЕ копировать. Просто не указывайте папку c:\X.

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

Пример работы

robocopy c:\testing c:\abc /XF c:\testing\Testing.txt /XD "C:\testing\New Folder (2)" "C:\testing\New Folder (3)" /S /E /SEC /DCOPY:T

Пример работы с корнем

robocopy c:\ d:\ /XF c:\Testing.txt /XD "C:\New Folder (2)" "C:\New Folder (3)" /S /E /SEC /DCOPY:T

Мой тест сработал, я создал несколько папок и подпапок, c:\testing был корнем в этом случае, c:\abc был корнем другого диска (очевидно, что это не совсем так, но для этой цели это должно иметь смысл). Папка, которую я хотел получить из корня, называлась "Новая папка", как вы видите, я не указал ее в /XD. Также убедитесь, что вы указали c:\, иначе имена, которые вы используете, будут глобальными. Другими словами, если я не укажу c:\testing в файле Testing.txt, он будет пропущен из всех копируемых подпапок. Параметр /SEC скопирует все метки безопасности и времени файлов.

Комментарии (2)