7Zip - Command Line: ยกเว้นโฟลเดอร์ตามรูปแบบไวด์การ์ด?


107

มีความคิดใดบ้างที่จะแยกพา ธ ที่มี wild-carded ออกจากคำสั่ง 7zip ได้?

ฉันกำลังทำสิ่งนี้:

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

และต้องการที่จะแยกใด ๆ\bin\*.*หรือ\obj\*.*โฟลเดอร์ที่พบภายใต้ "FolderToArchive"

หากต้องการยกเว้นไฟล์คุณสามารถใช้-xพารามิเตอร์ ไฟล์วิธีใช้มีตัวอย่างนี้สำหรับการใช้งาน-x:

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

นั่นยอดเยี่ยมสำหรับการยกเว้นไฟล์ แต่อีกครั้งฉันต้องการยกเว้นโฟลเดอร์ที่ระบุไวด์การ์ด ภายใต้ "FolderToArchive" ของฉันมีหลายโฟลเดอร์ภายใต้โฟลเดอร์เหล่านั้นอาจมีหรือไม่มีbin\และobj\โฟลเดอร์ ฉันไม่ต้องการรวมสิ่งเหล่านี้ในที่เก็บถาวร

ฉันได้ลองรูปแบบเช่น

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

ดูเหมือนจะไม่มีใครแยกbin\โฟลเดอร์ นี่เป็นเพียงข้อ จำกัด ของ 7zip หรือไม่

คำตอบ:


130

ในการแยกโฟลเดอร์binและobjซ้ำคุณสามารถใช้คำสั่ง:

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

5
สำหรับคนอื่น ๆ : ถ้าคุณต้องการที่จะไม่สนใจเฉพาะไฟล์ในไดเรกทอรีรากใช้-xr0!*.zip- r0อย่างน้อยฉันไม่สามารถทำให้การทำงานโดยไม่ต้อง
โอลิเวอร์

6
นอกจากนี้หากสิ่งนี้อยู่ในบรรทัดคำสั่ง Linux / Unix คุณอาจต้องใส่เครื่องหมายอัญประกาศเดี่ยวเพื่อไม่เพิ่มการประมวลผลล่วงหน้าโดยเชลล์เช่น'-x!$RECYCLE.BIN'เพื่อแยกถังรีไซเคิลของไดรฟ์ภายนอก
thanosa75

13

เพื่อหลีกเลี่ยงข้อผิดพลาดใช้ -r หรือ -xr อย่างระมัดระวัง

สมมติว่าคุณมีไดเรกทอรีเช่น:

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

และเรียกใช้คำสั่ง:

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

สิ่งที่คุณได้รับใน archive.7z:

.\path2\src
.\path5\src

นั่นคือ.\path2\และ.\path5\กลายเป็นโฟลเดอร์ด้านบนในไฟล์เก็บถาวร 7z และทั้งสองbinไดเรกทอรีนั้นถูกแยก

-x สนับสนุนเฉพาะพา ธ / ชื่อไฟล์ที่สัมพันธ์กับโฟลเดอร์ด้านบนในไฟล์เก็บถาวร

ดังนั้นหากคุณต้องการยกเว้น.\path1\path2\binแต่รวมไดเรกทอรี 'bin' อื่น ๆ ทั้งหมดคำสั่งควรเป็นดังนี้:

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

ฉันพยายามใช้พา ธ สัมบูรณ์ใน -x แต่ไม่ประสบความสำเร็จ


ปรับปรุง:

มีตัวเลือก-spfใน 7z สำหรับ Linux ซึ่งทำงานกับพา ธ สัมบูรณ์

ตามที่มาร์โก , -spfนอกจากนี้ยังมีใน Windows 7-Zip 15.14


2
หมายเหตุ: อย่างน้อยบน Ubuntu คุณจะได้รับคำแนะนำที่ดีที่สุดที่จะนำทุกแง่ -x ผู้ที่อยู่ในราคาเดียว'-x!path2\bin'ที่จะได้ทำงานในเปลือกทดแทน ... (ได้รับคุณมากอีกต่อไปไม่ถูกต้องไวยากรณ์คำสั่ง“” ... )
แฟรงก์ Nocke

หากต้องการอ้างถึงความคิดเห็นของ @FrankNocke คุณสามารถทำสิ่งนี้บน windows เพื่ออนุญาตให้มีจุดในชื่อโฟลเดอร์:'-xr!\.foo'
DonBecker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.