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


2

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

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


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


Спасибо! Я знаю человека, который сможет написать такую ​​программу, поэтому я спросил его, сделает ли он это для меня. Я дам вам знать, если это работает.
— Guest

К вашему сведению, 7-Zip смог сделать это без помех. (Еще раз спасибо, Рик!)
— Guest

0

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


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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.