Витягніть певний файл з архіву за допомогою 7-Zip з командного рядка


34

Наприклад, якщо у мене є архів, some.zipякий містить один або декілька файлів, як я можу витягти лише один файл (я знаю ім'я файлу) за допомогою 7-Zip з командного рядка в Windows?

Відповіді:


32

Як відповідь на відповідь surfasb , в кінці додайте прапор -r, щоб повторити:

7z e [archive.zip] -o[outputdir] [fileFilter] -r

Підтримка декількох фільтрів:

7z e [archive.zip] -o[outputdir] [fileFilter_1] [fileFilter_2] -r

Приклад:

Командний рядок декількох фільтрів:

7z e archive.zip -o outputdir *.xml *.dll -r

PS: Я використовую 7za.exe замість 7z.exe. Це фактична команда, яку я використовую у своєму сценарії:

7za.exe x archive.zip -o outputdir *.xml *.pdb *.exe *.ocx *.dll -r

1
Як я можу додати кілька фільтрів файлів, скажімо, .XMLі .zip? Вибачте, якщо я викрадаю цю тему, я просто не хотів додавати повторне запитання.
Fr0zenFyr

1
Має бути добре, розділяючи фільтри на простір. Див. Відредаговану відповідь вище. :)
zionyx

І як я витягую конкретний файл з архіву всередині архіву? Скажімо, файл, який я шукаю, - це "MyFile.txt" всередині "SubArchive.zip" всередині "MainArchive.zip". Чи можливо це?
PeterCo

1
@PeterCo, я думаю, що команда здатна витягнути лише SubArchive.zipз MainArchive.zipвашої справи. Ви можете запускати простежування команди для вилучення MyFile.txtз SubArchive.zipпісля початкової екстракції.
zionyx

13

Ви просто додаєте ім’я файлу в кінці.

7z e [archive.zip]-o [outputdir] [fileFilter]


1
Як я можу додати кілька фільтрів файлів, скажімо, .XMLі .zip? Вибачте, якщо я викрадаю цю тему, я просто не хотів додавати повторне запитання.
Fr0zenFyr

Це вже інше питання @ Fr0zenFyr. Щоб зрозуміти, що це не дублікат, ви можете посилатися на це питання самостійно, а потім уточнити, чим відрізняється ваш.
music2myear

@ music2myear: Дякую за пояснення. Відповідь, що голосує вгорі від zionyx, вже включає рішення. Моєму коментарю більше 2 років, тому було б обґрунтованою здогадкою припустити, що я або використовував вище рішення, або вже розмістив запитання і знайшов відповідь (BTW, це був мій випадок). Мій вирішений пост розміщено на SO та створено оригінальну тему до мого коментаря тут, тому я не зміг зв’язатись із цим питанням. :)
Fr0zenFyr

Примітка: як написано тут, не ставте пробіл між -o та outputdir.
Королівський джестер

4

Якщо ви подивитесь на сторінку чоловіка на 7z, ви побачите, що для вилучення файлу з 7z архіву може бути використана наступна команда (хоча використання шляху відсутнє на сторінці man):

7z x <archive> <path to file>

Приклади:

7z x backup.7z *.html
7z x backup.7z folderwithin/myfile.html

Можна також скористатися e.

У керівництві користувачів версії командного рядка, схоже, є додаткова інформація про фактичне використання.


2
Це відносний шлях до архіву?
music2myear

Так, "folderwithin" - це папка в корені архіву.
Королівський джестер

1

Зауважте, що 7zє наступний синтаксис (дотримуйтесь пробіли та лапки, що оточують "-oMy Folder"параметр встановлення імені вихідної папки, мені знадобилося кілька годин, як я спочатку робив це - неправильний шлях: * -o "My Folder"*):

7z e "my zip.zip" "-oMy Folder" *.jpg "all of these.*" -r
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.