1

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

Теперь я сделал короткий пакетный скрипт с использованием robocopy:

@echo off
robocopy "D:\AC ActiveZone Mobile" "C:\AC ActiveZone" /MIR
PAUSE

Папка ActiveZone Mobile - это наша папка X, а ActiveZone - наша папка Y. Теперь проблема в том, что это не двусторонняя синхронизация. Я продемонстрирую, что:

1.) И папки, и их подпапки, и файлы идентичны 2.) Создан новый файл T1 в папке X 3.) Создан новый файл T2 в папке Y 4.) Запустил скрипт

Результат: вместо того, чтобы иметь T1 и T2 в обеих папках X и Y, теперь у меня есть только T1 в обеих папках X и Y.

Кроме того, (после первого теста выше), если я удаляю T1 в папке Y и запускаю скрипт, все, что я получаю, это новый T1 в папке Y. Но действие по удалению T1 в Y не старше, а новее, чем создание T1 в X. Я хочу, чтобы T1 также удалялся в X вместо того, чтобы копировать T1 из X в Y.

Как это сделать с помощью пакетного скрипта?

2 ответа2

2

Хм, просто. Просто запустите его двумя способами, исключая старые файлы:

@ECHO OFF
ECHO Two way mirror between %1 and %2, continue?
PAUSE
robocopy %2 %1 /E /DST /FFT /XO /XJ
robocopy %1 %2 /E /DST /FFT /XO /XJ

Это должно сохранить более новую копию, если файл существует в обоих местах. Я использую /DST и /FFT, потому что различия меток времени NTFS /FAT32 часто приводят к ложному неверному сравнению в противном случае. Я также лично исключаю Thumbs.db, desktop.ini и т.д.

Если вы хотите удалить несуществующие файлы, вам нужно решить, какое из них является "основным", поместите его во вторую строку и замените /E на /MIR. Я думаю, что ваша идея узнать, был ли файл удален из одного или другого, в отличие от того, что у одного просто нет файла, который есть у другого, невозможна без какого-либо отслеживания, выходящего за рамки того, что может делать роботоскопия.

-1

Используйте Sync Center на панели управления, чтобы решить эту проблему. Robocopy - это «Robust Copy Tool», который будет только копировать, но включать другую информацию, например отметки времени. Он не синхронизируется, но всегда доступен в автономном режиме. Или используйте старомодный «портфель».

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