У меня есть почтовый файл, который содержит несколько файлов с одинаковыми именами файлов (и нет подпапок). На самом деле это разные файлы: они имеют уникальный размер и содержание и являются «дубликатами» только по названию. У меня вопрос, как я могу извлечь их все без перезаписи одного? Похоже, что ни WinRAR, ни PowerArchiver не могут сделать это автоматически (оба прекращают работу после извлечения только трех файлов, если я не скажу, что можно перезаписывать). Если я вручную извлекаю файлы по одному, он извлекает только последний добавленный файл с заданным именем; все же я знаю, основываясь на общем размере архива, что там есть данные для других файлов. Поэтому я попытался переименовать файлы, пока они были в zip-архиве (сначала я скопировал zip-файл); переименование одного файла заняло 10 минут и в итоге переименовало оба (хотя уникальные размеры были сохранены)! Я в недоумении относительно того, как действовать, пожалуйста, помогите.
РЕДАКТИРОВАТЬ: проблема решена! В то время как WinRAR и PowerArchiver терпели неудачу, бесплатная небольшая программа с открытым исходным кодом под названием 7-Zip смогла выполнить извлечение без проблем.
_1
после этого). Кроме того, 7zip дает вам возможность извлечь правильный файл (тот, который вы выбрали), а не только первую / последнюю версию, с которой он сталкивается.Ответы:
Вы можете попробовать использовать утилиту infozip unzip для командной строки. У него есть опция -B для создания резервной копии любого файла, перезаписанного во время извлечения, что может позволить вам получить два файла с одинаковым именем. Вы можете скачать его с http://www.info-zip.org/ ,
Если это не сработает, можно будет довольно легко написать программу с использованием (например) Java
java.util.zip.ZipInputStream
Класс, который проходит по файлу и извлекает повторяющиеся записи с новыми именами. Если у вас нет навыков, чтобы сделать это самостоятельно, существуют различные сайты по найму фрилансеров с многочисленными программистами, которые могут сделать это не очень много денег.источник
Вы можете попробовать извлечь файлы один за другим, а затем переименовать после каждого извлечения. Для этого сохраните готовность команды DOS / CMD (для переименования вновь создаваемых файлов) и откройте окно DOS / CMD, чтобы переименовать каждый новый файл, возможно, добавив символ в конце.
источник
Я до сих пор не уверен, как вообще возникает эта ситуация (где в архиве может быть несколько файлов с одинаковыми полными путем и именем) - это не имеет смысла, поскольку существующий файл должен обновляться / заменяться вместо добавления нового.
Независимо от того, всякий раз, когда я сталкиваюсь с этим, я просто обхожу это с помощью функции автоматического переименования, которую имеют некоторые архиваторы. Когда вы извлекаете такой архив, программа извлекает первый файл с таким именем, а затем, когда обнаруживает столкновение с последующими файлами, она подскажет вам, что вы хотите сделать. Большинство программ предлагают выбор игнорировать и переходить или перезаписывать, но некоторые программы, такие как 7-Zip а также WinRAR позволит вам переименовать файл и / или автоматически переименовать все файлы с конфликтами имен.
7-Zip (рисунок 1) добавит подчеркивание с увеличивающимся числом к имени файла (например,
foobar_1.txt
,foobar_2.txt
и т. д.), в то время как WinRAR (рисунок 2) добавит увеличивающий номер в скобках (например,foobar(1).txt
,foobar(2).txt
, так далее.)Рисунок 1 Приглашение 7-Zip о столкновении имен файлов
фигура 2 WinRAR запрос имени файла коллизии
Рисунок 3 Результирующие имена файлов
источник
:^Þ
WinRAR was the first program I tried, and I selected that option, but it didn't work
Любопытный; эта функция присутствует в течение длительного времени. Какую кнопку переименования вы использовали?ಠ_ಠ
)