В течение прошлых нескольких месяцев я скопировал несколько папок данных в zip-файлы в еженедельных интервалах. Теперь я хотел бы объединить те zip-файлы в один zip-файл, потому что большая часть содержания существующих zip-файлов является просто различными версиями тех же файлов данных.
Таким образом, если бы файл появляется в больше чем одном из существующих zip-файлов, я хотел бы, чтобы новейшая версия была в новом создаваемом zip-файле. Конечно, если файл появляется только в одном существующем zip-файле, то я хочу его в заключительном zip-файле также.
Я стараюсь не иметь необходимость разархивировать их один за другим к рабочей папке, перезаписывая данные из более старых zip-файлов с данными из более новых zip-файлов, и затем повторно архивируя все в новый zip-файл.
Из того, что я понимаю, что pkzip объединил бы сами zip-файлы, но является там надежным и быстрым бесплатным методом, о котором кто-либо может сказать мне?
Вам не понравится он, но: разархивация всего в рабочую папку в правильном порядке, затем архивируя результат является самым эффективным путем.
иначе Вы закончите с большим количеством потраченных впустую циклов ЦП:
таким образом по моему скромному мнению, просто использование 'разархивировало' wiseley:
% mkdir all
% for x in *.zip ; do unzip -d all -o -u $x ; done
% zip -r all.zip all
порядок разархивации важен, я не знаю шаблон Ваших имен zip, но я извлек бы новейший zip-файл сначала, '-u' опция разархивировали перезаписи только файлы, если они являются более новыми, или уже создает файлы если не там. в результате Вы разархивируете только новейшие файлы и архивируете результат только однажды.
Это не может быть тем, что Вы ищете, но свободный инструмент сборки Муравья действительно включает способность объединить Zipfiles.
Я думал, что Вы могли написать сценарий файлов, извлекаемых во временный каталог.
Существует проблема с этой командной строкой. Я не мог найти способ заказать разархивацию архивов, таким образом, более старый архив может перезаписать более новый архив. Эта проблема может быть преодолена при помощи незастежки-молнии переключателя командной строки только перезаписать, если более новый. Я главным образом использую С 7 zip, который не имеет такого параметра командной строки.
Кроме того, для этой команды нужно на всех zip-файлах, находящихся в том же каталоге. Не проблема, если все zip имеют уникальные имена. Тем не менее команда может быть изменена для установки ситуации.
for /f %f in ('dir /b *.zip') do "c:\program files\7-zip\7z" x %f -oc:\testdir -r -aoa
Для изменения это для использования другой программы разархивации просто заменяет "c:\program files\7-zip\7z" x %f -oc:\testdir -r -aoa
с любой командой Вы выполнились бы на каждом файле. Использовать %f
как заполнитель для названия файла Вы хотите разархивировать.
Я пытался искать полируемое приложение, бесплатное или иначе, и действительно не нашел то.
Надо надеяться, это даст Вам, хорошее начало и WinZip или что-то подобное могут заботиться о проблеме перезаписи.
Удачи.
Если я помню правильно, pkzip был программой командной строки.
Существует все еще версия командной строки ZIP, который утверждает, что был совместим с pkzip.
Это назвало информационный ZIP и должна быть версия для Вашей ОС.