ขอแนะนำคำสั่ง PowerShell Unzip และ Zip บนไฟล์เก็บถาวร
การบีบอัดหรือขยายไฟล์เดียวหรือหลายไฟล์เป็นทักษะอันทรงคุณค่าที่ผู้ใช้ PowerShell ทุกคนสามารถใช้งานได้ทันที บางทีคุณอาจต้องการลดขนาดไฟล์ลงเล็กน้อยหรือเพียงเก็บไฟล์ไว้ในที่อื่นที่ไม่ใช่โฟลเดอร์ หากเป็นเช่นนั้น ให้ PowerShell คลายซิปและบีบอัดไฟล์ของคุณโดยใช้คำสั่ง
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้หลายวิธีในการซิปและแตกไฟล์ใน PowerShell
พร้อม? มาเริ่มกลิ้งกันเถอะ!
ข้อกำหนดเบื้องต้น
ตัวอย่างในบทช่วยสอนนี้จะใช้ PowerShell 7.1.x คำสั่งนี้ยังใช้งานได้บน Windows PowerShell 5.1
การบีบอัดไฟล์ด้วยคำสั่ง Compress-Archive
คุณใช้แอปพลิเคชันเพื่อบีบอัดและเก็บไฟล์มานานหลายปีโดยคลิกที่ GUI แต่คุณรู้หรือไม่ว่าคุณสามารถทำงานเดียวกันใน PowerShell ได้ การใช้คำสั่ง Compress-Archive ทำให้คุณสามารถบีบอัดไฟล์ได้อย่างง่ายดาย
ลองนึกภาพสักครู่ว่าคุณมีไฟล์ไม่กี่ไฟล์ที่จะส่งให้กับลูกค้า ไฟล์อยู่ในโฟลเดอร์บนคอมพิวเตอร์ของคุณที่อาจมีลักษณะคล้ายกับภาพหน้าจอด้านล่าง บทช่วยสอนนี้อ้างอิงไฟล์เหล่านี้สำหรับการรันคำสั่ง แต่คุณสามารถใช้ไฟล์ใดก็ได้ตามที่คุณต้องการ
การบีบอัดไฟล์ทีละไฟล์
ก่อนที่คุณจะสามารถบีบอัดไฟล์เดียวได้ คุณต้องมีสองสิ่งก่อน แหล่งที่มาและปลายทาง
เปิด PowerShell ในฐานะผู้ดูแลระบบ จากนั้นเรียกใช้คำสั่งด้านล่างเพื่อบีบอัดไฟล์เดียว (widget.png) เป็นไฟล์ ZIP (archive.zip) พารามิเตอร์ -Path จะบอกคำสั่ง Compress-Archive ถึงตำแหน่งของไฟล์ที่จะบีบอัด ในขณะที่ -DestinationPath จะบอกตำแหน่งที่จะเก็บไฟล์
Compress-Archive -Path widget.png -DestinationPath archive.zipบีบอัดหลายไฟล์พร้อมกันโดยคั่นด้วยเครื่องหมายจุลภาค เช่น
บีบอัด-เก็บถาวร -Path widget.png,file1.txt,manual.pdf -DestinationPath archive.zip
การบีบอัดไฟล์ทั้งหมดจากโฟลเดอร์
หากคุณได้จัดระเบียบไฟล์ในโฟลเดอร์ที่คุณต้องการบีบอัดในคราวเดียว ให้ใช้อักขระไวด์การ์ด เช่น เครื่องหมายดอกจัน (*) เพื่อแสดงว่าไฟล์ทั้งหมดเหมาะสมที่สุด
เรียกใช้คำสั่งด้านล่างเพื่อบีบอัดและเก็บถาวร (Compress-Archive) ไฟล์ทั้งหมด (*) จากโฟลเดอร์ C:\Demo ไปยัง archive.zip ไฟล์
Compress-Archive -Path 'C:\Demo\*' -DestinationPath archive.zipตอนนี้บางทีคุณอาจต้องการบีบอัดไฟล์ประเภทเดียวกันเท่านั้น หากเป็นเช่นนั้น ให้รวมสัญลักษณ์ไวด์การ์ดเข้ากับนามสกุลไฟล์เพื่อบีบอัด
เรียกใช้คำสั่งด้านล่างเพื่อบีบอัดและเก็บถาวรไฟล์บันทึกทั้งหมด (*.log) ไปยังไฟล์ archive.zip
Compress-Archive -Path '*.log' -DestinationPath archive.zipการกำหนดระดับการบีบอัด
จากตัวอย่างก่อนหน้านี้ คุณได้บีบอัดไฟล์ด้วยระดับการบีบอัดเริ่มต้น (เหมาะสมที่สุด) แต่จะครอบคลุมระดับการบีบอัดต่างๆ กัน ระดับการบีบอัดจะกำหนดจำนวนการบีบอัดที่ใช้เมื่อคุณสร้างไฟล์เก็บถาวร
ด้านล่างนี้คือพารามิเตอร์ระดับการบีบอัดสามรายการที่คุณสามารถเลือกได้:
- เหมาะสมที่สุด (ค่าเริ่มต้น) - เวลาในการบีบอัดขึ้นอยู่กับจำนวนและขนาดของไฟล์
เร็วที่สุด- วิธีการบีบอัดที่เร็วที่สุด ส่งผลให้ขนาดไฟล์ใหญ่ขึ้นNoCompression- ทำให้ขนาดไฟล์ไม่เปลี่ยนแปลง
เรียกใช้คำสั่งด้านล่างเพื่อดูว่าแต่ละระดับการบีบอัดทำงานอย่างไร แต่ละคำสั่งจะบีบอัดไฟล์บันทึก (*.log) ลงในไฟล์ archive.zip
# Optimal (Default compression level)
Compress-Archive -Path '*.log' -DestinationPath archive.zip
# Fastest compression level
Compress-Archive -Path '*.log' -DestinationPath archive.zip -CompressionLevel Fastest
# No compression
Compress-Archive -Path '*.log' -DestinationPath archive.zip -CompressionLevel NoCompression
การเพิ่มไฟล์ลงในไฟล์บีบอัด
ตอนนี้ หากคุณลืมเพิ่มไฟล์ลงในไฟล์เก็บถาวร อย่าเพิ่งตกใจ! มีพารามิเตอร์ -Update ที่คุณสามารถใช้เพื่อเพิ่มไฟล์ลงในไฟล์เก็บถาวรที่มีอยู่
เรียกใช้คำสั่งด้านล่างเพื่อเพิ่ม (-Update) ไฟล์ที่คุณต้องการ (manual.pdf) ไปยังไฟล์เก็บถาวรที่มีอยู่ (archive.zip)
Compress-Archive -Update -Path 'manual.pdf' -DestinationPath archive.zip
พารามิเตอร์
-Updateจะบอกคำสั่งCompress-Archiveให้เขียนทับไฟล์ที่มีอยู่ด้วยไฟล์ใหม่โดยอัตโนมัติ แต่ควรระวังเมื่อคุณเพิ่มไฟล์ลงในไฟล์เก็บถาวร คุณคงไม่อยากเขียนทับไฟล์ของคุณด้วยไฟล์เก่า
การขยายไฟล์ ZIP ด้วยคำสั่ง Expand-Archive
เช่นเดียวกับที่คุณบีบอัดไฟล์ การขยายไฟล์เก็บถาวรก็ไม่ได้แตกต่างกันมากนัก คุณจะต้องเรียกใช้คำสั่ง Expand-Archive ในขณะที่ระบุเส้นทางต้นทางและปลายทาง คำสั่ง Expand-Archive ช่วยให้คุณสามารถแยกไฟล์ที่เก็บถาวรได้
เรียกใช้คำสั่ง Expand-Archive ด้านล่างเพื่อแยกเนื้อหาของไฟล์ archive.zip เนื่องจากไม่ได้ระบุเส้นทางปลายทาง คำสั่งจึงสร้างโฟลเดอร์ปลายทางในไดเร็กทอรีการทำงาน โฟลเดอร์ปลายทางมีชื่อเหมือนกับไฟล์เก็บถาวร (เก็บถาวร)
Expand-Archive -Path archive.zip -DestinationPath C:\Demo\Archiveเพิ่มพารามิเตอร์
-Forceเพื่อระงับข้อความแจ้งการยืนยันทั้งหมด
หากคุณใช้
Expand-Archiveกับไฟล์เก็บถาวรที่มีไฟล์ที่ไม่ได้บีบอัดในรูปแบบ UTF-8 ชื่อไฟล์ที่แยกออกมาอาจแตกต่างจากแหล่งที่มา
การแสดงรายการไฟล์บีบอัดผ่าน .NET
ไม่มีทางใดในสอง cmdlets ก่อนหน้านี้ที่คุณได้เรียนรู้ว่าจะช่วยให้คุณสามารถดูภายในไฟล์เก็บถาวรโดยไม่ต้องขยายก่อน บางทีคุณอาจลืมว่าไฟล์ใดที่คุณบีบอัดไว้แล้ว หากเป็นเช่นนั้น การแยกทุกอย่างออกเพียงเพื่อตรวจสอบว่าไฟล์ใดที่คุณเก็บถาวรไว้แล้วจะเป็นการเสียเวลา
วิธีที่ดีกว่าในการดูไฟล์เก็บถาวรคือการใช้คลาส .NET ZipFile ในฐานะส่วนหนึ่งของเนมสเปซ System.IO.Compression คลาส .NET ZipFile มีเมธอดที่เรียกว่า OpenRead(String) ซึ่งช่วยให้คุณสามารถดูภายในไฟล์เก็บถาวรที่มีอยู่ได้
เรียกใช้คำสั่งด้านล่างเพื่ออ่านแต่ละไฟล์ในไฟล์ archive.zip (OpenRead("$pwd\archive.zip")) และกำหนดผลลัพธ์ให้กับ ตัวแปร $archive
# (pwd) - working/current directory
$archive = [System.IO.Compression.ZipFile]::OpenRead("$pwd\archive.zip")ตอนนี้ให้รันคำสั่งด้านล่างเพื่อแสดงรายการแต่ละไฟล์ที่กำหนดในตัวแปร $archive ตามชื่อ (Select-Object -Property Name)
$archive.Entries | Select-Object -Property Nameด้านล่างนี้ คุณจะเห็นคำสั่งที่แสดงไฟล์บีบอัดแต่ละไฟล์ในไฟล์ archive.zip
หากคุณต้องการดูคุณสมบัติของแต่ละไฟล์แทน ให้อ้างอิงคุณสมบัติ Entries แทน
$archive.Entriesตอนนี้คุณจะเห็นคุณสมบัติของทุกไฟล์ในไฟล์เก็บถาวร คล้ายกับภาพที่แสดงด้านล่าง
Powershell Unzip และไฟล์ Zip ด้วยโมดูล 7Zip4PowerShell
บทช่วยสอนเกี่ยวกับการบีบอัดและขยายไฟล์ zip จะไม่สมบูรณ์หากไม่มีการกล่าวถึงโมดูลการบีบอัดอื่น 7Zip4PowerShell 7Zip4PowerShell มีความสามารถที่ได้รับการปรับปรุงซึ่งอาจทำให้เป็นตัวเลือกที่มีฟีเจอร์หลากหลาย
ตัวอย่างเช่น ก่อนหน้านี้คุณได้เรียนรู้เกี่ยวกับคลาสและวิธีการ .NET ด้วยโมดูล 7Zip4PowerShell คำสั่งเพื่อแสดงรายการไฟล์ที่เก็บถาวรจะซับซ้อนน้อยลง
เรียกใช้คำสั่ง Get-7Zip ด้านล่างเพื่อแสดงรายการไฟล์ทั้งหมดภายในไฟล์ archive.zip (-ArchiveFileName .\archive.zip)
ด้วย 7Zip4PowerShell cmdlet
Compress-7Zipมอบตัวเลือกเพิ่มเติมให้กับคุณสำหรับไฟล์เก็บถาวรประเภทต่างๆ เช่น Tar, GZip, BZip2, SevenZip, XZ และ Zip
คุณยังสามารถดูข้อมูลเกี่ยวกับไฟล์เก็บถาวรได้ด้วยการเรียกใช้คำสั่ง
Get-7ZipInformationเช่น:Get-7ZipInformation -ArchiveFileName archive.zipคำสั่งแสดงรายการคุณสมบัติทั้งหมดของไฟล์ archive.zip
บทสรุป
ถึงตอนนี้ คุณได้เรียนรู้วิธีที่ PowerShell คลายซิปและบีบอัดไฟล์ด้วยคำสั่งในตัวและด้วยโมดูล 7Zip4PowerShell ความรู้ที่เพิ่งค้นพบนี้มีประโยชน์ไม่ว่าคุณจะลดขนาดไฟล์หรือเมื่อคุณส่งไฟล์จำนวนมากไปเป็นไฟล์เดียว แต่นั่นคือทั้งหมดที่ PowerShell มีให้ใช่ไหม
แทนที่จะใช้คำสั่งเป็นโซลูชันการสำรองข้อมูลเบื้องต้น ทำไมไม่สร้างสคริปต์เพื่อเก็บถาวรไฟล์และส่งอีเมลหรือถ่ายโอนไปยังที่จัดเก็บข้อมูลระยะยาวโดยอัตโนมัติ



