Ekstrak file tertentu dari arsip dengan 7-Zip dari baris perintah

34

Jika saya memiliki arsip, misalnya, some.zipyang berisi satu atau lebih file, bagaimana saya bisa mengekstrak hanya satu file (saya tahu nama file) dengan 7-Zip dari baris perintah di Windows?

Kiesoo
sumber

Jawaban:

32

Sebagai tindak lanjut dari jawaban surfasb , tambahkan tanda -r di bagian akhir untuk muncul kembali:

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

Dukungan beberapa filter:

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

Contoh:

Baris perintah beberapa filter:

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

PS: Saya menggunakan 7za.exe bukan 7z.exe. Ini adalah perintah aktual yang saya gunakan dalam skrip saya:

7za.exe x archive.zip -o outputdir *.xml *.pdb *.exe *.ocx *.dll -r
zionyx
sumber
1
Bagaimana saya bisa menambahkan beberapa filter file, say .XMLand .zip? Maaf jika saya membajak utas ini, saya hanya tidak ingin menambahkan pertanyaan rangkap.
Fr0zenFyr
1
Harus baik-baik saja dengan memisahkan filter dengan ruang. Lihat jawaban yang diedit di atas. :)
zionyx
Dan bagaimana cara mengekstrak file tertentu dari arsip di dalam arsip? Katakanlah file yang saya cari adalah "MyFile.txt" di dalam "SubArchive.zip" di dalam "MainArchive.zip". Apakah ini mungkin?
PeterCo
1
@PeterCo, saya pikir perintah ini hanya mampu mengekstrak SubArchive.zipdari MainArchive.zipdalam kasus Anda. Anda dapat menjalankan perintah tindak lanjut untuk mengekstrak MyFile.txtdari SubArchive.zipsetelah ekstraksi awal.
zionyx
13

Anda tinggal menambahkan nama file di bagian akhir.

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

surfasb
sumber
1
Bagaimana saya bisa menambahkan beberapa filter file, say .XMLand .zip? Maaf jika saya membajak utas ini, saya hanya tidak ingin menambahkan pertanyaan rangkap.
Fr0zenFyr
Ini pertanyaan yang berbeda @ Fr0zenFyr. Untuk memperjelas bahwa itu bukan duplikat, Anda dapat merujuk pertanyaan ini di pertanyaan Anda sendiri, dan kemudian menentukan bagaimana perbedaan Anda.
music2myear
@ music2myear: Terima kasih atas klarifikasi. Jawaban terpilih oleh zionyx sudah termasuk solusi. Komentar saya sudah lebih dari 2 tahun, jadi akan menjadi dugaan yang masuk akal untuk berasumsi bahwa saya menggunakan solusi di atas atau sudah mengirim pertanyaan dan menemukan jawaban (BTW, ini kasus saya). Posting terselesaikan saya ada di SO dan utas asli dibuat sebelum komentar saya ada di sini sehingga saya tidak dapat menautkan ke pertanyaan ini. :)
Fr0zenFyr
Catatan: seperti yang tertulis di sini, jangan beri spasi antara -o dan outputdir.
King's badge
4

Jika Anda melihat halaman manual untuk 7z Anda akan menemukan bahwa perintah berikut dapat digunakan untuk mengekstrak file dari arsip 7z (meskipun penggunaan jalur tidak ada dari halaman manual):

7z x <archive> <path to file>

Contoh:

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

Atau Anda bisa menggunakan e.

Para pengguna versi baris perintah panduan tampaknya memiliki informasi lebih lanjut tentang penggunaan aktual.

Todd Partridge
sumber
2
Apakah itu jalur relatif di dalam arsip?
music2myear
Ya, "folderwithin" adalah folder di akar arsip.
King's badge
1

Catatan yang 7zmemiliki sintaks berikut (perhatikan spasi dan tanda kutip di sekitar "-oMy Folder"opsi untuk mengatur nama folder keluaran, perlu waktu berjam-jam untuk mencari tahu, karena saya awalnya melakukan ini - dengan cara yang salah: * -o "My Folder"*):

7z e "my zip.zip" "-oMy Folder" *.jpg "all of these.*" -r
Albert Marenčin
sumber