Trích xuất một tệp nhất định từ kho lưu trữ với 7-Zip từ dòng lệnh


34

Ví dụ: nếu tôi có một kho lưu trữ some.zipchứa một hoặc nhiều tệp, làm thế nào tôi có thể trích xuất chỉ một tệp (tôi biết tên của tệp) bằng 7-Zip từ dòng lệnh trong Windows?

Câu trả lời:


32

Để theo dõi câu trả lời của Surfasb , hãy thêm cờ -r ở cuối để lặp lại:

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

Hỗ trợ nhiều bộ lọc:

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

Thí dụ:

Dòng lệnh nhiều bộ lọc:

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

PS: Tôi sử dụng 7za.exe thay vì 7z.exe. Đây là lệnh thực tế tôi sử dụng trong tập lệnh của mình:

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

1
Làm cách nào tôi có thể thêm nhiều bộ lọc tệp, nói .XML.zip? Xin lỗi nếu tôi chiếm quyền điều khiển chủ đề này, tôi chỉ không muốn thêm một câu hỏi trùng lặp.
Fr0zenFyr

1
Nên ổn bằng cách tách các bộ lọc theo không gian. Xem câu trả lời được chỉnh sửa ở trên. :)
zionyx

Và làm cách nào để trích xuất một tệp cụ thể từ kho lưu trữ bên trong kho lưu trữ? Hãy nói rằng tệp tôi đang tìm là "MyFile.txt" bên trong "SubArchive.zip" bên trong "MainArchive.zip". Điều này có thể không?
PeterCo

1
@PeterCo, tôi nghĩ rằng lệnh chỉ có khả năng trích xuất SubArchive.ziptừ MainArchive.ziptrong trường hợp của bạn. Bạn có thể chạy một sau lên lệnh để chiết xuất MyFile.txttừ SubArchive.zipsau khi khai thác ban đầu.
zionyx

13

Bạn chỉ cần thêm tên tệp vào cuối.

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


1
Làm cách nào tôi có thể thêm nhiều bộ lọc tệp, nói .XML.zip? Xin lỗi nếu tôi chiếm quyền điều khiển chủ đề này, tôi chỉ không muốn thêm một câu hỏi trùng lặp.
Fr0zenFyr

Đó là một câu hỏi khác nhau @ Fr0zenFyr. Để làm rõ rằng nó không trùng lặp, bạn có thể tham khảo câu hỏi này theo cách riêng của mình và sau đó chỉ định cách khác nhau của bạn.
nhạc2myear

@ music2myear: Cảm ơn đã làm rõ. Câu trả lời được bình chọn hàng đầu bởi zionyx đã bao gồm một giải pháp. Nhận xét của tôi đã hơn 2 tuổi, vì vậy sẽ là một phỏng đoán hợp lý khi cho rằng tôi đã sử dụng giải pháp trên hoặc đã đăng câu hỏi và tìm thấy câu trả lời (BTW, đây là trường hợp của tôi). Bài viết được giải quyết của tôi là trên SO và chủ đề ban đầu được tạo trước khi bình luận của tôi ở đây vì vậy tôi không thể liên kết với câu hỏi này. :)
Fr0zenFyr

Lưu ý: vì nó được viết ở đây, không đặt khoảng trắng giữa -o và outputdir.
Jester

4

Nếu bạn nhìn vào trang man trong 7z, bạn sẽ thấy rằng lệnh sau có thể được sử dụng để trích xuất một tệp từ kho lưu trữ 7z (mặc dù việc sử dụng đường dẫn bị thiếu trong trang man):

7z x <archive> <path to file>

Ví dụ:

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

Hoặc bạn có thể sử dụng e.

Các dòng lệnh sử dụng phiên bản dẫn dường như có thêm thông tin về việc sử dụng thực tế.


2
Đó có phải là đường dẫn tương đối trong kho lưu trữ không?
nhạc2myear

Có, "thư mục" là một thư mục ở thư mục gốc của kho lưu trữ.
Jester

1

Lưu ý rằng 7zcó cú pháp sau (quan sát các khoảng trắng và dấu ngoặc kép xung quanh "-oMy Folder"tùy chọn để đặt tên thư mục đầu ra, tôi mất hàng giờ để tìm ra, như ban đầu tôi đã làm điều này - sai cách: * -o "My Folder"*):

7z e "my zip.zip" "-oMy Folder" *.jpg "all of these.*" -r
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.