3

как откатить копию файлов из ИСТОЧНИКА в МАРШРУТ? Позвольте мне привести примеры на основе Magento (но это не имеет значения).

Когда я устанавливаю новый модуль, я получаю zip-файл и извлекаю его во временную папку, например, c:\temp\my_new_module

У меня есть несколько каталогов и файлов, извлеченных там, из почтового индекса. Некоторые из каталогов отображают каталоги Magento, некоторые являются новыми каталогами.

Затем я копирую файлы из основного пути (c:\temp\my_new_module) в корневой каталог magento (c:\magento)

Допустим, я тестирую модуль несколько дней спустя, и мне не нравится, как я могу откатить DESTINATION? т.е. как удалить из DESTINATION = c:\magento:

  1. новые каталоги с новыми файлами из c:\magento (которые были скопированы из SOURCE)
  2. новые файлы добавлены в существующие каталоги 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 ответ1

2

Мой вопрос, через несколько дней после того, как я это сделал, как я могу автоматизировать удаление всех скопированных файлов?

Вы можете использовать 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

Дополнительные ресурсы

         /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.

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