Robocopy не копирует корневую папку и ее метку времени - она копирует все подкаталоги и файлы (когда установлены соответствующие параметры), и, похоже, нет параметра / аргумента, чтобы сказать Robocopy, что вы хотите саму корневую папку и ее метку или атрибуты времени дословно копировать.
Так скажи, я хочу, я хочу скопировать C: / Кисти
Robocopy скопирует все свои подкаталоги и файлы в место назначения, но не в саму папку «Кисти» со всеми связанными атрибутами и отметкой времени.
Вы понимаете, о чем я спрашиваю? Это довольно просто, и у Robocopy, кажется, нет возможности для этого. Люди уже задавали этот вопрос на разных форумах, но, насколько мне известно, никто не ответил на этот вопрос.
rsync
, но что если у вас нет косой черты в конце вашей целевой папки? Как насчет попытки изменить скрипт на уровне командной строки вместо использования графического интерфейса? Я точно знаю, что инструмент командной строки будет делать то, что вам нужно.Ответы:
Перетащите папку на
bat
или используйте в Send To . Это создаст папку с именем и отметкой времени исходного каталога и скопирует все файлы.источник
%~n1
?Я согласен с ОП, невозможность скопировать корневую папку - большой недостаток робокопии. Как насчет обмана и перемещения папки с кистями во временную папку, выполнения операции robocopy для временной папки, а затем ее перемещения назад?
Что-то типа:
источник
Попробуйте
md D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
из командной строки, подставив правильные пути.источник
Как я не вижу хорошего и простого решения ни в одном из ответов:
Если нет решения для robocopy, вы можете взглянуть на xxcopy (есть бесплатные и коммерческие версии).
Есть, конечно, много других альтернатив робокопии, некоторые из них перечислены здесь .
Смотрите также Best Free File Copy Utility .
источник
xxcopy
Это отличная утилита, но в бесплатной версии есть подсказка, на которую вы должны ответить, если используете какой-либо из большого списка параметров командной строки. Использованиеxxcopy
из командной строки, это дополнительное приглашение раздражает. Но этоxxcopy
вообще предотвращает (усложняет) использование командного файла.user105198 ответ на полпути,
D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
действительно просто создаст новую папку. Вам нужно будет добавить / MIR и / DCOPY: T к немув сочетании означает, что атрибуты и временные метки исходного каталога будут зеркально отображены в созданной папке.
так:
источник
Я думаю, вы обнаружите, что Robocopy делает именно то, что вы хотите, при условии, что вы скажете ему копировать метки времени папки (/ DCOPY: T). Из моих экспериментов я обнаружил, что следующее (на первый взгляд недокументированное) поведение верно для Robocopy:
Указанные свойства могут включать (как минимум) информацию о безопасности (/ SEC) или метки времени папки (/ DCOPY: T).
Поэтому в следующем примере папке c: \ destination \ будет назначена та же отметка времени, что и для c: \ source \ folder.
Я протестировал это с версиями Robocopy, включенными в Windows 7, Windows 8 и Windows 2003 Resource Kit (только параметр / SEC). Обратите внимание, что только более новые версии Robocopy (XP026 и выше) поддерживают параметр / DCOPY: T.
источник
Если вы объединяете
/IF :: Include the following Files.
с собой,/E :: copy subdirectories, including Empty ones.
вы получаете (близкий к) желаемый эффект:источник
Robocopy на самом деле не предназначен для этого легко. Тем не менее, есть способ.
Корневая папка содержит, скажем, 50 файлов и 40 папок. Вы хотите только папку X (но вы также хотите, чтобы это время и отметка даты).
Параметр / DCOPY: T указывает сохранить метки времени папки. / XF указывает, какие файлы НЕ копировать, / XD указывает, какие папки НЕ копировать. Просто не указывайте папку c: \ X.
Основным недостатком этого является исследование всех папок и имен файлов в корне и, в частности, их всех здесь. Если вы делаете это много на разных системах, сценарий может быть написан.
Рабочий пример
robocopy c: \ testing c: \ abc / XF c: \ testing \ Testing.txt / XD "C: \ testing \ Новая папка (2)" "C: \ testing \ Новая папка (3)" / S / E / SEC / DCOPY: T
Корневой рабочий пример
robocopy c: \ d: \ / XF c: \ Testing.txt / XD "C: \ Новая папка (2)" "C: \ Новая папка (3)" / S / E / SEC / DCOPY: T
Мой тест сработал, я создал несколько папок и подпапок, в этом случае c: \ testing был root, c: \ abc был root другого диска (очевидно, это не так, но для этого это должно иметь смысл). Папка, которую я хотел получить от корня, называлась «Новая папка», как вы можете видеть, я не указал ее в / XD. Также убедитесь, что вы указали c: \ или имена, которые вы используете, будут глобальными. Другими словами, если я не укажу c: \ testing в файле Testing.txt, он пропустит его из ВСЕХ копируемых подпапок. / SEC скопирует все метки безопасности и времени файла.
источник
Теоретически, использование
/DCOPY:T
должно решить все ваши проблемы.Но я видел, как это произошло, и я не уверен, что назвал бы это «ошибкой», а скорее следствием последовательности операций (ОК, ошибка).
Эта команда должна работать для копирования всех файлов из
C:\Brushes
вD:\NEWBrushes
, и/DCOPY:T
должна вызывать копирование меток времени исходной папки в папку назначения:Что я видел (по крайней мере, в некоторых версиях Robocopy), так это то, что команда выполнена успешно, но отметка времени
D:\NEWBrushes
папки установлена на текущую дату и время.Таким образом, похоже, что эта
/DCOPY:T
функция не работает для «базовой» (самой верхней) папки, которую вы копируете.Я полагаю, что это работает, но что временная метка папки назначения "наступает" операциями, которые позже в последовательности операций.
То, что я считаю, происходит с этой командой:
это что-то вроде этого:
D:\NEWBrushes
если она еще не существуетC:\Brushes
вD:\NEWBrushes
C:\Brushes
вD:\NEWBrushes
Похоже, что шаг 3, изменение содержимого папки
D:\NEWBrushes
вызывает изменение временной меткиD:\NEWBrushes
.Для меня «обходной путь» состоял в том, чтобы запустить
robocopy
команду для копирования файлов и папок, а затем выполнить (ту же)robocopy
команду во второй раз.Итак, при первом запуске:
все файлы и папки будут скопированы. Затем запустите его снова:
Во время второго
robocopy
запуска никакие файлы или папки внутриD:\NEWBrushes
не будут изменены, и/DCOPY:T
опция скажетrobocopy
скопировать метку времени изC:\Brushes
вD:\NEWBrushes
(если нет папок / файловC:\Brushes
, которые изменились со времени первого запускаrobocopy
).источник
Я сейчас решал корневые папки для одного очень быстрого и легкого сценария резервного копирования с robocopy, есть пример. Должен помочь кому-либо:
источник