การสร้างไฟล์เก็บถาวรจากไดเร็กทอรีโดยไม่มีชื่อไดเร็กทอรีที่ถูกเพิ่มเข้ากับไฟล์เก็บถาวร


83

ฉันมีโครงสร้างโฟลเดอร์ต่อไปนี้:

  • ราก
    • folder1
    • folder2
    • folder3
    • 7za.exe

ฉันต้องการที่จะเรียกใช้ 7-Zip เครื่องมือบรรทัดคำสั่งในการบีบอัดไฟล์ทั้งหมดในfolder1การ zip folder1.zipไฟล์ที่เรียกว่า

วิ่งต่อไปนี้

7za.exe a -tzip folder1.zip folder1\\*.*

สร้างไฟล์ซิปตามที่คาดไว้ อย่างไรก็ตามเมื่อฉันเปิดไฟล์ zip มันมีโฟลเดอร์อยู่ในนั้นfolder1และภายในนั้นฉันมีไฟล์ทั้งหมดที่อยู่ในโฟลเดอร์นั้น ฉันไม่ต้องการเพิ่มชื่อโฟลเดอร์ในโฟลเดอร์ zip เช่นฉันต้องการเพิ่มไฟล์ทั้งหมดในรูปแบบไฟล์ "แบน"

ฉันไม่ต้องการเรียกใช้เครื่องมือบรรทัดคำสั่งซ้ำสำหรับแต่ละไฟล์ / โฟลเดอร์

มีสวิตช์ที่ใช้งานฟังก์ชั่นนี้หรือไม่?


คุณcdเข้าโฟลเดอร์ 1 และได้7za.exe a -tzip ..\folder1.zip *.*ไหม
zpletan

คำตอบ:


136

จากไฟล์ช่วยเหลือ 7-Zip :

คำสั่ง (เพิ่ม)

เพิ่มไฟล์เพื่อเก็บถาวร

ตัวอย่าง

7z a archive1.zip subdir\

เพิ่มไฟล์และโฟลเดอร์ย่อยทั้งหมดจากโฟลเดอร์ย่อยเพื่อเก็บถาวร archive1.zip ชื่อไฟล์ในที่เก็บถาวรจะมีส่วนย่อย \ ส่วนนำหน้า

7z a archive2.zip .\subdir\*

เพิ่มไฟล์และโฟลเดอร์ย่อยทั้งหมดจากโฟลเดอร์ย่อยเพื่อเก็บถาวร archive2.zip ชื่อไฟล์ในที่เก็บถาวรจะไม่มีส่วนย่อย \ ส่วนนำหน้า

cd /D c:\dir1\

7z a c:\archive3.zip dir2\dir3\

ชื่อไฟล์ในไฟล์เก็บถาวร c: \ archive3.zip จะประกอบด้วย dir2 \ dir3 \ คำนำหน้า แต่จะไม่มี c: \ dir1 \ คำนำหน้า

ดังนั้นคำสั่งที่คุณต้องการจะเป็น: 7za.exe a folder1.zip .\folder1\*

นอกจากนี้ยังควรคำนึงถึงการใช้สัญลักษณ์แทนการจัดการของ 7-Zip ไม่ถือว่า*.*เป็น "ไฟล์ทั้งหมด" - มันหมายถึง "ไฟล์ทั้งหมดที่มีจุดในชื่อไฟล์" ไฟล์ที่มีนามสกุลน้อยกว่าจะพลาดไป หากคุณต้องการไฟล์ทั้งหมดเพียงแค่ใช้*แทน

สุดท้ายพารามิเตอร์ไม่จำเป็นถ้าชื่อไฟล์ที่เก็บจะสิ้นสุดลงใน-tzip .zip7-Zip นั้นฉลาดพอที่จะรู้ได้ว่ารูปแบบใดที่คุณต้องการในกรณีเหล่านั้น จำเป็นเฉพาะเมื่อคุณต้องการส่วนขยายที่กำหนดเอง (เช่น7za.exe a -tzip foo.xpi <files>สำหรับ Mozilla Add-on)


2

สิ่งนี้ใช้ได้สำหรับฉัน

พิจารณาโครงสร้างโฟลเดอร์เช่น C: \ Parent \ SubFolders ..... และคุณต้องการสร้าง parent.zip ซึ่งจะมีไฟล์และโฟลเดอร์ทั้งหมด C: \ Parent โดยไม่มีโฟลเดอร์หลัก [เช่นจะเริ่มจาก SubFolders ..... ]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

สิ่งนี้จะสร้าง Parent.zip ใน C: \ Parent


2
เป็นการทำซ้ำคำตอบอื่นและไม่เพิ่มเนื้อหาใหม่ โปรดอย่าโพสต์คำตอบเว้นแต่ว่าคุณมีสิ่งใหม่ที่จะมีส่วนร่วม
DavidPostill

ในขณะที่ฉันกำลังค้นหาวิธีแก้ปัญหาฉันไม่ได้รับโซลูชันนี้อย่างแม่นยำ เห็นได้ชัดว่าฉันจะไม่เพียงคัดลอกวางคำตอบบางอย่างที่ฉันพบทางออนไลน์ ฉันใช้เวลากับมันดังนั้นฉันรู้สึกว่าฉันควรแบ่งปัน ตามฉันคุณสามารถค้นหาคำตอบที่แน่นอนที่นี่และใน Stack Overflow โพสต์โดยฉัน
Pritesh Dhokchaule

โปรดทราบว่า 7-Zip ไม่ได้*.*หมายถึง "ไฟล์ทั้งหมด" แต่ "ไฟล์ทั้งหมดที่มีจุดเป็นส่วนหนึ่งของชื่อไฟล์" ดังนั้นคำตอบนี้จะละเว้นไฟล์ที่ไม่มีนามสกุล (นี่คือคำตอบที่ได้รับการยอมรับ)
Bill_Stewart

1

เพียงเพื่อขยายคำตอบที่ยอมรับ (ฉันไม่สามารถเพิ่มความคิดเห็นที่นั่น):

บน Linux ที่เพิ่ม '*' ไม่ได้ผลสำหรับฉันดังนั้นฉันเลยคิดรูปแบบบรรทัดคำสั่ง verbose มากขึ้นซึ่งให้ผลลัพธ์ที่ต้องการ:

curr_dir=$(pwd); \ 
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir

===========

คำอธิบายสคริปต์:

  • บันทึกเส้นทาง dir ปัจจุบันเพื่อใช้ในภายหลัง;
  • นำทางไปยังไดเรกทอรีที่ต้องการเก็บถาวร
  • สร้างที่เก็บถาวร (แจ้งให้ทราบ '.' (จุด) ในท้ายที่สุด);
  • กลับไปที่เดิม dir;
  • กำจัดตัวแปรซึ่งจัดเก็บพา ธ dir ดั้งเดิม

ฉันหวังว่ามันจะมีประโยชน์สำหรับใครบางคน


ฉันขอแนะนำให้วาง*เครื่องหมายคำพูด (มิฉะนั้นเชลล์จะขยายไปยังไฟล์ที่สถานที่นี้)
Simon Sobisch

-1

เกี่ยวกับเรื่องนี้ เช่นโฟลเดอร์ / โฟลเดอร์ย่อย 1 โฟลเดอร์ / โฟลเดอร์ย่อย 2

เลือกโฟลเดอร์ย่อยทั้งหมด> คลิกขวาจากนั้นสร้างไฟล์เก็บถาวร> เลือกรูปแบบใดก็ได้

* ชื่อไฟล์เก็บถาวรจะเป็นโฟลเดอร์หลัก ..

ง่ายใช่มั้ย


3
คำถามเกี่ยวกับ CLI สำหรับ 7-zip ไม่ใช่วิธีการใช้ GUI การเรียนรู้วิธีใช้ GUI นั้นไม่มีประโยชน์เมื่อคุณต้องการทำสิ่งต่าง ๆ โดยอัตโนมัติ
binki
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.