[工作筆記]透過7zip指令對檔案進行壓縮與解壓縮

Lily Ho
Apr 18, 2021

--

前言

7zip是個免費的檔案壓縮程式,我想很多人應該也都使用過。不過我以前使用7zip的時候都是直接右鍵進行各種資料檔案壓縮和解壓縮,直到工作上有需求後才發現原來檔案其實也可以透過cmd下7zip的指令進行壓縮和解壓縮,查找到7zip的指令使用方式也很多樣,因此想把這次研究到的指令統整筆記起來。

7zip最常使用的功能肯定是壓縮與解壓縮了,因此這次主要介紹這兩個做法

壓縮檔案

壓縮檔案的指令是“a”:

7z a 壓縮後檔案名稱.zip 欲壓縮資料夾或檔案路徑

通常壓縮檔案的時候有些人會習慣加上密碼,使用的參數是“-p密碼”:

7z a archive.7z -p密碼 欲壓縮資料夾或檔案路徑

另外還有一個滿特別的參數有“-m”,可以指定壓縮方式和細節設定:

7z a 壓縮檔案名稱.zip -m指定壓縮方式

我設定過的做法是-m0=LZMA。“-m”後面跟著的第一位就是壓縮等級,這邊可以設定的選擇有{0|1|3|5|7|9},分別可以對應到7zip圖形使用者介面上的{Store|Fastest|Fast|Normal|Maximum|Ultra},這裡預設是5(Normal)。

7zip圖形使用者介面上的壓縮等級設定

後面“=LZMA”是設定資料壓縮的演算法,可以設定的有:Copy、Deflate、Deflate64、BZip2、LZMA、PPMd,能設定的方法比圖形使用者介面上的選擇多,演算法的差異我還沒有詳細研究過,只知道Deflate和LZMA都是無失真資料壓縮演算法,差別只在於Dictionary的方式不同。

不過我有找到一篇部落格是zip壓縮演算法的選擇,裡面有做使用不同演算法的結果比較,滿有趣的。如果之後有研究更多關於壓縮演算法的心得會在寫下來分享。

7zip圖形使用者介面上的資料壓縮方式

解壓縮檔案

解壓縮的指令是“e”、或“x”,差別在於使用“x”可以按照原本的資料結構:

7z e 欲解壓縮檔案名稱.zip7z x 欲解壓縮檔案名稱.zip

如果解壓縮的檔案有加上密碼的話,也要使用參數“-p密碼”來解壓檔案:

7z e 欲解壓縮檔案名稱.zip -p密碼7z x 欲解壓縮檔案名稱.zip -p密碼

解壓縮如果要指定路徑的話,則是使用參數“-o”:

7z e 欲解壓縮檔案名稱.zip -o指定路徑7z x 欲解壓縮檔案名稱.zip -o指定路徑

參數“-ao”,設定解壓縮是否要覆蓋:

7z e 欲解壓縮檔案名稱.zip -ao覆蓋模式7z x 欲解壓縮檔案名稱.zip -ao覆蓋模式

覆蓋模式共有4種,a|s|t|u,a是不提示直接覆蓋;s是直接跳過;t是自動將原存在檔案改名;u是自動將要解壓縮的檔案改名。

指令操作範例

範例資料夾架構
壓縮檔案指令a進行壓縮資料夾DIR1及裡面的內容,指令執行的路徑下會產生testzip.zip檔案
加上-p參數後,解壓縮時需要輸入密碼“test123”
以指令e解壓縮,解壓縮後所有檔案及資料夾都會放在根目錄
以指令x解壓縮,解壓縮後資料仍會依照壓縮前的資料架構
若zip檔有使用參數”-p”的壓縮密碼的話,解壓縮指令也需要加上“-ptest123”
使用參數-o可以把檔案解壓縮到指定路徑

其他更詳細的7zip指令參數寫法格式詳細說明可以參考官網:

結語

其實這篇從研究到寫下來也隔了兩三年,好多原本想紀錄的研究心得變得沒有太多印象。果然還是要邊研究邊整理筆記寫下來才會花比較少的時間。希望接下來能更有動力的把研究歷程和心得更新上來,除了做記錄之外也希望同時間在研究的人也能少走更多路,更容易找到自己想要的資訊。:)

最後附上7zip官方網站給大家參考:

--

--

Lily Ho
Lily Ho

Written by Lily Ho

分享學到的小知識或心得,努力變成週更(ง๑ •̀_•́)ง 如果你覺得我的文章有趣或有幫助的話,請別吝嗇給我幾個拍手吧👏

No responses yet