Як я можу витягти кожен файл у zip-архіві, який містить більше одного файлу з тим же ім'ям або шляхом?


2

У мене є zip-файл, який містить декілька файлів, які мають одне і те ж ім'я файлу (і немає підпапок). Це фактично різні файли: вони мають унікальні розміри і вміст, і є "дублікатами" тільки в назві. Моє питання, як я можу витягти їх все без перезапису іншого? Ні WinRAR, ні PowerArchiver, здається, не в змозі зробити це автоматично (обидва зупинки після вилучення тільки трьох файлів, якщо я кажу, що це нормально, щоб перезаписати). Якщо я вручну видобуваю файли один за одним, він витягує лише останній доданий файл з певним ім'ям; але я знаю, на основі загального розміру архіву, що дані для інших файлів є там. Так що я спробував перейменувати файли, поки все ще в zip (я скопіював zip спочатку); було потрібно 10 хвилин, щоб перейменувати один файл, і в кінцевому підсумку перейменував обидва (хоча унікальні розміри були збережені)! Я не знаю, як діяти, будь ласка, допоможіть.

EDIT: Проблема вирішена! У той час як WinRAR і PowerArchiver зазнали невдачі, безкоштовна програма з відкритим вихідним кодом під назвою 7-Zip змогла виконати видобуток без сутички.


Як у світі ви робили створити архів з файлами з тим же ім'ям?
grawity

1
Однією з очевидних можливостей є те, що архів був створений на Unix-подібній системі, де імена файлів з відмінностями у випадку вважаються різними, але Guest намагається витягти на Windows або Mac, де вони вважаються ідентичними.
Jules

Просто: деякі файли були додані до архіву пізніше, після того, як вони вже були створені. Програми ZIP дозволять вам це зробити. (Я цього не робив, я сам, якийсь дебіл. Я намагаюся відновити його роботу.)
Guest

1
@Guest Ви пробували 7-zip ? Він має функцію автоматичного перейменування під час вилучення, коли він виявляє дублікати імен файлів. Я тільки що перевірив його і він працює ідеально. Виберіть екстракт до каталогу, і коли він надасть екрану перезаписати, виберіть "Автоперейменувати". Обидві версії витягнуті правильно (з ім'ям з _1 після неї). Крім того, 7zip дає вам можливість витягти правильний файл (той, який ви вибрали), а не тільки перша / остання версія вона стикається.
Rik

1
@Rik ТАК! ЦЕ СПРАЦЮВАЛО! Проблема вирішена. : D Дякую, стільки. (Безкоштовна програма оновлювалася останньою в 2010 році - стільки за власну оплату останньої версії PowerArchiver.)
Guest

Відповіді:


0

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

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


Дякую! Я знаю когось, хто повинен написати таку програму, тому я запитав його, чи зробить він це для мене. Я дам вам знати, якщо він працює.
Guest

FYI, 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

Дякуємо за інформативний відповідь! Ви підсумували всю проблему цілком красиво, виправити проблему і все. FYI, хоча, 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 не має Перейменувати опція, тільки a Перейменувати Все опції. Мені неодноразово порушувалося це обмеження. ಠ_ಠ )
Synetech
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.