2

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

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

3 ответа3

0

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

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

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 с выделенной опцией автоматического переименования

Рисунок 2 Приглашение WinRAR для имени файла-коллизии

Приглашение WinRAR для имени файла при столкновении с выделенными опциями переименования

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

Снимок экрана Explorer с переименованными файлами

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .