Откат копии файлов из источника в пункт назначения
Как откатить копию файлов из ИСТОЧНИКА в МАРШРУТ? Позвольте мне привести примеры на основе Magento (но это не имеет значения).
Когда я устанавливаю новый модуль, я получаю zip-файл и извлекаю его во временную папку, например, c: \ temp \ my_new_module
У меня есть несколько каталогов и файлов, извлеченных там, из почтового индекса. Некоторые из каталогов отображают каталоги Magento, некоторые являются новыми каталогами.
Затем я копирую файлы из основного пути (c: \ temp \ my_new_module) в корневой каталог magento (c: \ magento)
Допустим, я тестирую модуль несколько дней спустя, и мне не нравится, как я могу откатить DESTINATION? т.е. как удалить из DESTINATION =c:\magento:
- новые каталоги с новыми файлами из c:\magento (которые были скопированы из SOURCE)
- новые файлы добавлены в существующие каталоги Magento
Это означает, что я хочу сохранить файлы и папки в DESTINATION, которые уже были там до копирования! Я не хочу ничего трогать от ИСТОЧНИКА (ни удалить, ни что-то еще).
Я ищу скрипт для этого (командная строка), я думаю, он сравнил бы SOURCE и DESTINATION.
For Each File from SOURCE
if FILE_EXIST in DESTINATION
Then DELETE FILE From DESTINATION
If DIRECTORY_IS_EMPTY in DESTINATION
THEN DELETE DIRECTORY in DESTINATION
(последний сохранит непустые каталоги, то есть те, которые были созданы до копирования)
спасибо за любую помощь, Род
1 ответ
Мой вопрос, через несколько дней после того, как я это сделал, как я могу автоматизировать удаление всех скопированных файлов?
Вы можете использовать Robocopy, чтобы сказать: посмотрите каталог [source] для всех файлов и подпапок и рекурсивно сверяйте с другим каталогом [destination] для тех же файлов, которые уже существуют в источнике.
Вы можете использовать параметры, чтобы он удалял файлы из источника, если он обнаружит, что эти же файлы уже существуют в месте назначения (папке, в которую вы их копируете), и он сделает это рекурсивно, но не удалит какие-либо папки.
Вы также можете использовать опции, чтобы он НЕ копировал файлы в источнике, которых нет в каталоге назначения, чтобы НЕ копировать их, так как вы завершите операцию копирования вручную.
Вам нужно только рекурсивно удалить файлы из источника, которые уже существуют в месте назначения. Вы завершите операцию копирования новых файлов из источника в место назначения вручную, и вам понадобится только что-то, что поможет упростить очистку файлов в источнике, которые уже были скопированы вручную в место назначения.
Robocopy Script
Я протестировал сценарий, перечисленный выше, и он работал так же, как я объясняю, и так же, как и ожидалось, поэтому этот метод был протестирован
@ECHO ON
SET Source=F:\TestSource
SET Destination=F:\TestDest
ROBOCOPY "%Source%" "%Destination%" *.* /S /IS /PURGE /MOV /NOCOPY
GOTO EOF
Дополнительные ресурсы
Robocopy /?
/S :: copy Subdirectories, but not empty ones. /NOCOPY :: COPY NO file info (useful with /PURGE). /PURGE :: delete dest files/dirs that no longer exist in source. /MOV :: MOVe files (delete from source after copying). /IS :: Include Same files.