Откатить копию файлов из источника в пункт назначения

502
Rod

как откатить копию файлов из ИСТОЧНИКА в МАРШРУТ? Позвольте мне привести примеры на основе 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 

(последний сохранит непустые каталоги, т.е. те, которые были созданы до копирования)

спасибо за любую помощь, Род

3
Ваш вопрос не имеет смысла ... потому что если вы просто удалите папку my_folder, вы получите ту же папку my_new_folder. Итак, почему вы копируете и удаляете папки, когда вы можете просто удалить папку в порядке. Может быть, вы имели в виду ваш вопрос, чтобы что-то значить ... В этом случае вам нужно переписать, чтобы быть более понятным. Sun 7 лет назад 0
Я ответил на ваш вопрос, но думаю, что вам нужно изменить его, чтобы правильно указать, что вы пытаетесь выполнить, поскольку после его чтения вы копируете файлы из одного местоположения в другое и хотите удалить файлы, которые вы скопировали, из исходного местоположения, поскольку они уже существуют в новой копии, скопированной в каталог назначения, но я думаю, что у вас была опечатка или два сбивающих с толку желания, которые вы пытаетесь выполнить. Pimp Juice IT 7 лет назад 0
мой плохой, я переписал вопрос Rod 7 лет назад 0

1 ответ на вопрос

2
Pimp Juice IT

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

Вы можете использовать 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. 
извини, мой плохой, мой вопрос не был ясен. Я хочу откатить DESTINATION до того, что было раньше. Я обновил свой вопрос. Любое другое предложение? Rod 7 лет назад 0