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

2

У меня есть почтовый файл, который содержит несколько файлов с одинаковыми именами файлов (и нет подпапок). На самом деле это разные файлы: они имеют уникальный размер и содержание и являются «дубликатами» только по названию. У меня вопрос, как я могу извлечь их все без перезаписи одного? Похоже, что ни WinRAR, ни PowerArchiver не могут сделать это автоматически (оба прекращают работу после извлечения только трех файлов, если я не скажу, что можно перезаписывать). Если я вручную извлекаю файлы по одному, он извлекает только последний добавленный файл с заданным именем; все же я знаю, основываясь на общем размере архива, что там есть данные для других файлов. Поэтому я попытался переименовать файлы, пока они были в zip-архиве (сначала я скопировал zip-файл); переименование одного файла заняло 10 минут и в итоге переименовало оба (хотя уникальные размеры были сохранены)! Я в недоумении относительно того, как действовать, пожалуйста, помогите.

РЕДАКТИРОВАТЬ: проблема решена! В то время как WinRAR и PowerArchiver терпели неудачу, бесплатная небольшая программа с открытым исходным кодом под названием 7-Zip смогла выполнить извлечение без проблем.

Guest
источник
Как в мире ты Создайте архив с файлами с таким же именем?
grawity
1
Одна очевидная возможность состоит в том, что архив был создан в Unix-подобной системе, где имена файлов с различиями в регистре считаются разными, но Гость пытается извлечь в системе Windows или Mac, где они считаются идентичными.
Jules
Все просто: некоторые файлы были добавлены в архив позже, после того, как он уже был создан. Программы ZIP позволят вам сделать это. (Я сам этого не делал; какой-то придурок сделал. Я пытаюсь восстановить его работу.)
Guest
1
@ Гость Ты пробовал 7-Zip ? Он имеет функцию автоматического переименования во время извлечения, когда он обнаруживает повторяющиеся имена файлов. Я только что проверил это, и он отлично работает. Выберите извлечение в каталог, и когда он дает экрану для перезаписи, выберите «Автоматическое переименование». Обе версии извлечены правильно (одна названа с _1 после этого). Кроме того, 7zip дает вам возможность извлечь правильный файл (тот, который вы выбрали), а не только первую / последнюю версию, с которой он сталкивается.
Rik
1
@ Рик ДА! ЭТО СРАБОТАЛО! Задача решена. : D Спасибо большое. (Бесплатная программа, последняя версия которой была обновлена ​​в 2010 году? Так много для обладания платной последней версии PowerArchiver ... ...)
Guest

Ответы:

0

Вы можете попробовать использовать утилиту infozip unzip для командной строки. У него есть опция -B для создания резервной копии любого файла, перезаписанного во время извлечения, что может позволить вам получить два файла с одинаковым именем. Вы можете скачать его с http://www.info-zip.org/ ,

Если это не сработает, можно будет довольно легко написать программу с использованием (например) Java java.util.zip.ZipInputStream Класс, который проходит по файлу и извлекает повторяющиеся записи с новыми именами. Если у вас нет навыков, чтобы сделать это самостоятельно, существуют различные сайты по найму фрилансеров с многочисленными программистами, которые могут сделать это не очень много денег.

Jules
источник
Спасибо! Я знаю человека, который сможет написать такую ​​программу, поэтому я спросил его, сделает ли он это для меня. Я дам вам знать, если это работает.
Guest
К вашему сведению, 7-Zip смог сделать это без помех. (Еще раз спасибо, Рик!)
Guest
0

Вы можете попробовать извлечь файлы один за другим, а затем переименовать после каждого извлечения. Для этого сохраните готовность команды DOS / CMD (для переименования вновь создаваемых файлов) и откройте окно DOS / CMD, чтобы переименовать каждый новый файл, возможно, добавив символ в конце.

Shivanand
источник
Как я уже упоминал, когда я перетаскиваю их по одному, он извлекает только тот файл, который был добавлен в архив самым последним (поэтому, даже если я переименую файлы вручную, они в любом случае являются дубликатами). Я могу видеть различные данные там, но я не могу получить к ним либо автоматически или же вручную.
Guest
0

Я до сих пор не уверен, как вообще возникает эта ситуация (где в архиве может быть несколько файлов с одинаковыми полными путем и именем) - это не имеет смысла, поскольку существующий файл должен обновляться / заменяться вместо добавления нового.

Независимо от того, всякий раз, когда я сталкиваюсь с этим, я просто обхожу это с помощью функции автоматического переименования, которую имеют некоторые архиваторы. Когда вы извлекаете такой архив, программа извлекает первый файл с таким именем, а затем, когда обнаруживает столкновение с последующими файлами, она подскажет вам, что вы хотите сделать. Большинство программ предлагают выбор игнорировать и переходить или перезаписывать, но некоторые программы, такие как 7-Zip а также WinRAR позволит вам переименовать файл и / или автоматически переименовать все файлы с конфликтами имен.

7-Zip (рисунок 1) добавит подчеркивание с увеличивающимся числом к ​​имени файла (например, foobar_1.txt, foobar_2.txtи т. д.), в то время как WinRAR (рисунок 2) добавит увеличивающий номер в скобках (например, foobar(1).txt, foobar(2).txt, так далее.)


Рисунок 1 Приглашение 7-Zip о столкновении имен файлов

7-Zip’s filename-collision prompt with auto-rename option highlighted

фигура 2 WinRAR запрос имени файла коллизии

WinRAR’s filename-collision prompt with rename options highlighted

Рисунок 3 Результирующие имена файлов

Screenshot of Explorer with renamed files

Synetech
источник
Doh! Думаю, мне не стоило прекращать набирать ответ пару часов, чтобы поужинать и посмотреть телевизор; кажется, что ответ, который я печатал, уже был адресован в то время. Несмотря на это, я уже сделал скриншоты, поэтому я не хотел, чтобы они пропали даром. :^Þ
Synetech
Спасибо за информативный ответ! Вы суммировали всю проблему довольно хорошо, решение проблемы и все. К вашему сведению, WinRAR была первой программой, которую я попробовал, и я выбрал эту опцию, но она не сработала! 7-Zip работал как шарм, но это единственная программа, которую я пробовал, которая работала. пожимание плечами (Изменить: В их защиту, это может быть потому, что у меня есть старая версия.)
Guest
WinRAR was the first program I tried, and I selected that option, but it didn't work Любопытный; эта функция присутствует в течение длительного времени. Какую кнопку переименования вы использовали?
Synetech
@Guest Возможно, вы захотите принять этот ответ, так как он отвечает на ваш вопрос (и мы не хотели бы оставлять вопрос "открытым").
Rik
(Кстати, меня всегда раздражало, что 7Zip не имеет переименовывать вариант, только переименовывать Все вариант. Я был разочарован этим ограничением во многих случаях. ಠ_ಠ )
Synetech