7Zip - Dòng lệnh: Loại trừ (các) thư mục theo mẫu ký tự đại diện?


108

Bất kỳ ý tưởng làm thế nào để loại trừ (các) đường dẫn có ký tự đại diện khỏi lệnh 7zip dòng lệnh?

Tôi đang làm một cái gì đó như thế này:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

và muốn loại trừ bất kỳ \bin\*.*hoặc \obj\*.*các thư mục được tìm thấy bên dưới "FolderToArchive".

Để loại trừ các tập tin, bạn có thể sử dụng -xtham số. Tệp trợ giúp đưa ra ví dụ này để sử dụng -x:

7z a -tzip archive.zip *.txt -x!temp.*

Đó là tuyệt vời để loại trừ một tập tin. Nhưng, một lần nữa, tôi muốn loại trừ một thư mục được chỉ định ký tự đại diện. Trong "FolderToArchive" của tôi có nhiều thư mục, trong các thư mục đó có thể có hoặc không có bin\obj\các thư mục. Tôi muốn không bao gồm những thứ này trong kho lưu trữ.

Tôi đã thử các mẫu như

-x!bin\*
-x!bin\*.*
-x!\bin\*
-x!\bin\*.*
-x!\\bin\\*
-x!\\bin\\*.*

Không có gì có vẻ loại trừ bin\thư mục. Đây có phải chỉ đơn giản là một giới hạn của 7zip?

Câu trả lời:


132

Để loại trừ các thư mục binobj theo cách đệ quy, bạn có thể sử dụng lệnh:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj

5
Đối với những người khác: nếu bạn chỉ muốn bỏ qua các tệp trong thư mục gốc, hãy sử dụng -xr0!*.zip- ít nhất tôi không thể làm cho nó hoạt động mà không có r0.
Oliver

6
Ngoài ra, nếu đây là trong một dòng lệnh Linux / Unix, bạn có thể cần phải đặt trong các dấu ngoặc đơn, để không thêm tiền xử lý bởi shell, ví dụ: '-x!$RECYCLE.BIN'để loại trừ Thùng rác của ổ đĩa ngoài.
thanosa75

15

Để tránh lỗi, sử dụng -r hoặc -xr cẩn thận.

giả sử bạn có các thư mục như:

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

và chạy lệnh:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

những gì bạn có trong kho lưu trữ.7z:

.\path2\src
.\path5\src

Đó là, .\path2\.\path5\trở thành thư mục hàng đầu trong archive.7z và cả hai binthư mục đều bị loại trừ.

-x chỉ hỗ trợ đường dẫn / tên tệp liên quan đến thư mục trên cùng trong kho lưu trữ.

Vì vậy, nếu bạn chỉ muốn loại trừ .\path1\path2\bin, nhưng bao gồm tất cả các thư mục 'bin' khác, lệnh sẽ như thế này:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -x!path2\bin

Tôi đã cố gắng sử dụng đường dẫn tuyệt đối trong -x, nhưng không bao giờ thành công.


Cập nhật:

Có một tùy chọn -spftrong 7z cho Linux, hoạt động với đường dẫn tuyệt đối.

Theo Marco , -spfcũng có sẵn trên Windows từ 7-zip 15,14


2
Lưu ý: Ít nhất trên Ubuntu bạn nên tốt nhất để đặt tất cả những điều khoản -x trong dấu nháy đơn '-x!path2\bin'để không chạy vào thay vỏ ... (nhận quý khách lâu hơn nữa, cú pháp không đúng “lệnh” ...)
Frank Nocke

Để tham khảo bình luận của @FrankNocke, bạn cũng có thể thực hiện việc này trên windows để cho phép dấu chấm trong tên thư mục:'-xr!\.foo'
DonBecker
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.