• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

PowerShell 壓縮與解壓縮 Zip 壓縮檔教學與範例

介紹如何使用 PowerShell 指令稿,自動壓縮與解壓縮 Zip 壓縮檔,並提供常用的範例程式碼。

建立 Zip 壓縮檔

在第五版之後的 PowerShell 本身就有支援 Zip 壓縮檔的壓縮功能,我們可以利用 Compress-Archive 指令來壓縮檔案或目錄:

# 建立 Zip 壓縮檔
Compress-Archive -Path D:\MyFolder -DestinationPath D:\MyArchive.zip

這樣 PowerShell 就會將 D:\MyFolder 這整個目錄壓縮成 D:\MyArchive.zip 這個壓縮檔。

如果要分開指定多個檔案,可以用逗號分隔:

# 壓縮多個檔案
Compress-Archive -Path D:\MyFolder\MyFile.docx, D:\MyFolder\MyImg.jpg -DestinationPath D:\MyArchive.zip

更新壓縮檔

如果要更新壓縮檔,可以加上 -Update 參數:

# 更新壓縮檔
Compress-Archive -Path D:\MyFolder\*.txt -Update -DestinationPath D:\MyArchive.zip

執行之後,PowerShell 比對 D:\MyArchive.zip 與 D:\MyFolder\*.txt 中的檔案,將有更新的檔案加入 D:\MyArchive.zip 壓縮檔中,而若有新增的檔案也會一併加入。

壓縮層級

壓縮層級會影響壓縮所耗費的時間,以及所產生的壓縮檔大小,我們可以使用 -CompressionLevel 參數來指定壓縮層級,可用的選項如下。

層級 說明
Fastest 使用最快速的方式壓縮,這種方式會產生較大的壓縮檔。
NoCompression 不要進行壓縮。
Optimal 最佳壓縮,產生的壓縮檔較小,需要的時間跟檔案大小有關。此方式為預設值。

若要減少壓縮所耗費的時間,可以使用 Fastest 的壓縮方式:

# 建立 Zip 壓縮檔
Compress-Archive -Path D:\MyFolder -CompressionLevel Fastest -DestinationPath D:\MyArchive.zip

直接指定檔案名稱

Compress-Archive 在使用 -Path 參數指定路徑時,某些萬用字元位有特殊意義(例如 * 代表任意的字元),如果想讓 PowerShell 直接根據字面上的文字解譯,不要有任何特殊意義,可以改用 -LiteralPath:

# 不使用萬用字元
Compress-Archive -LiteralPath D:\奇怪的檔名.docx -DestinationPath D:\MyArchive.zip

通常在大部分的情況下使用 -Path 即可,當遇到比較奇怪的檔名時,才會需要用到 -LiteralPath。

強制覆蓋舊檔

如果在建立壓縮檔時,目標的 Zip 壓縮檔已經存在的話,Compress-Archive 就會顯示錯誤訊息,如果想要強制讓它覆蓋舊的 Zip 壓縮檔的話,可以加上 -Force 參數:

# 強制建立 Zip 壓縮檔
Compress-Archive -Path D:\MyFolder -Force -DestinationPath D:\MyArchive.zip

解壓縮 Zip

若要在第五版之後的 PowerShell 中解壓縮 Zip 檔案,可以使用 Expand-Archive 指令:

# 解壓縮 Zip 檔
Expand-Archive -Path D:\MyArchive.Zip -DestinationPath D:\Output

執行之後就會將 D:\MyArchive.Zip 解壓縮至 D:\Output 目錄中,如果 D:\Output 目錄不存在的話,解壓縮時它會自動建立。

直接指定檔案名稱

若要 PowerShell 直接根據字面上的文字解譯檔案名稱,可以使用 -LiteralPath 參數來指定檔名:

# 不使用萬用字元
Expand-Archive -LiteralPath D:\奇怪的檔名.Zip -DestinationPath D:\Output

強制覆蓋舊檔

如果在解壓縮的目的目錄中,已經存在有壓縮檔中的檔案,則解壓縮時就會出錯,若要強制覆蓋舊檔,可以加上 -Force 參數:

# 強制解壓縮 Zip 檔
Expand-Archive -Path D:\MyArchive.Zip -Force -DestinationPath D:\Output

參考資料:StackOverflow、Sysadmins of the North、StackOverflow、StackOverflow

分類:PowerShell

主要資訊欄

搜尋

近期文章

  • Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤
  • Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例
  • Linux 網路設定 ip 指令用法教學與範例
  • Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例
  • Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例
  • Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例
  • Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例
  • Linux 使用 age 簡潔的加密、解密工具使用教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide