Как объединиться / объединяют zip-файлы?

В течение прошлых нескольких месяцев я скопировал несколько папок данных в zip-файлы в еженедельных интервалах. Теперь я хотел бы объединить те zip-файлы в один zip-файл, потому что большая часть содержания существующих zip-файлов является просто различными версиями тех же файлов данных.

Таким образом, если бы файл появляется в больше чем одном из существующих zip-файлов, я хотел бы, чтобы новейшая версия была в новом создаваемом zip-файле. Конечно, если файл появляется только в одном существующем zip-файле, то я хочу его в заключительном zip-файле также.

Я стараюсь не иметь необходимость разархивировать их один за другим к рабочей папке, перезаписывая данные из более старых zip-файлов с данными из более новых zip-файлов, и затем повторно архивируя все в новый zip-файл.

Из того, что я понимаю, что pkzip объединил бы сами zip-файлы, но является там надежным и быстрым бесплатным методом, о котором кто-либо может сказать мне?

21
задан 08.01.2010, 05:45

4 ответа

Вам не понравится он, но: разархивация всего в рабочую папку в правильном порядке, затем архивируя результат является самым эффективным путем.

иначе Вы закончите с большим количеством потраченных впустую циклов ЦП:

  • предположите, что Ваш результат переходит к 'first.zip'
  • каждый файл от '2.zip', '3.zip' и т.д. должен быть разархивирован и затем заархивирован снова в 'first.zip'
  • в '2.zip' существует, файл 'foobar.txt' и в '3.zip' существует другой файл 'foobar.txt'. при слиянии его способ, которым Вы хотите объединить его, ведет для 'сжатия его X раз'
  • toc .zip в конце файла: Вы добавляете больше содержания (к середине
    .zip путем обновления файла в середине), и целый файл должен быть переписан

таким образом по моему скромному мнению, просто использование 'разархивировало' wiseley:

% mkdir all
% for x in *.zip ; do unzip -d all -o -u $x ; done
% zip -r all.zip all

порядок разархивации важен, я не знаю шаблон Ваших имен zip, но я извлек бы новейший zip-файл сначала, '-u' опция разархивировали перезаписи только файлы, если они являются более новыми, или уже создает файлы если не там. в результате Вы разархивируете только новейшие файлы и архивируете результат только однажды.

7
ответ дан 07.12.2019, 10:05

Это не может быть тем, что Вы ищете, но свободный инструмент сборки Муравья действительно включает способность объединить Zipfiles.

https://ant.apache.org/manual/Tasks/zip.html

4
ответ дан 07.12.2019, 10:05

Я думал, что Вы могли написать сценарий файлов, извлекаемых во временный каталог.

Существует проблема с этой командной строкой. Я не мог найти способ заказать разархивацию архивов, таким образом, более старый архив может перезаписать более новый архив. Эта проблема может быть преодолена при помощи незастежки-молнии переключателя командной строки только перезаписать, если более новый. Я главным образом использую С 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 или что-то подобное могут заботиться о проблеме перезаписи.

Удачи.

1
ответ дан 07.12.2019, 10:05

Если я помню правильно, pkzip был программой командной строки.

Существует все еще версия командной строки ZIP, который утверждает, что был совместим с pkzip.

Это назвало информационный ZIP и должна быть версия для Вашей ОС.

0
ответ дан 07.12.2019, 10:05

Теги

Похожие вопросы