分享幾個常用的7-Zip 壓縮與解壓縮命令 - The Will Will Web

文章推薦指數: 80 %
投票人數:10人

注意:7-Zip 並非使用Windows 的system wildcard parser,他並不會真的去比對有沒有這些系統檔案,而是傳入字串到 7z 命令中,讓7-Zip 去比對所有檔案! ←執行Docker容器可使用dumb-init或tini改善程序優雅結束的問題 自製編譯器不求人:快速上手ANTLR與.NET開發環境設定→ 我們最近幾年幾乎所有案子都導入CI/CD,把所有能自動化的工作全部都指令化,所以只要公司需要開發時期用的測試機,或是客戶需要安裝主機,通常都可以在10分鐘內搞定所有環境與設定。

今天這篇文章我要來分享幾個常用的7-Zip命令與參數,因為7-Zip在第一次使用7z命令的時候,他的使用方式比較沒那麼直覺,所以寫成文章供未來查表參考之用。

安裝7-Zip工具 一如往常的,我幾乎都使用Chocolatey進行安裝7-Zip套件: chocoinstall7zip-y 請注意要輸入7zip才是正確的套件名稱喔,這裡的7與zip中間不能加上Dash符號(-)! 你也可以用微軟最近推出的WindowsPackageManagerCLI安裝7-Zip工具 wingetinstall7zip WindowsPackageManager1.0|WindowsCommandLine 常用的壓縮檔案命令與參數 壓縮整個資料夾,而且壓縮檔案中的第一層就是該資料夾 這意味著壓縮檔中第一層目錄中沒有檔案,只有一個資料夾! 會這樣壓縮,通常是因為「解壓縮的人」經常會使用「解壓縮到這裡」的方式進行解壓縮,如果他把壓縮檔放在「桌面」上,解壓縮的時候就會看到桌面上只有一個檔案,看起來比較乾淨。

壓縮dir1\資料夾下所有檔案,而且壓縮檔案中會看到dir1這個資料夾! 7za"dir1.zip""dir1\" 如果你用以下命令壓縮,將會在壓縮檔中看到dir1與dir2資料夾等路徑! 7za"dir1.zip""dir1\dir2\" 7-Zip預設會壓縮該目錄與所有子目錄的所有檔案! 如果要壓縮成*.7z格式,不用特別下參數,直接設定好壓縮檔的副檔名即可,例如: 7za"dir1.7z""dir1\" 注意:7-Zip支援*.rar的解壓縮,但不能使用RAR格式進行,因為RAR壓縮格式有專利保護! 壓縮整個資料夾,而且壓縮檔案中第一層就是該資料夾下所有檔案與子資料夾 我個人比較喜歡這樣壓縮檔案,許多雲端平台在上傳檔案部署的時候,也會要求要用這種方式壓縮才能正常部署。

壓縮dir1\資料夾下所有檔案,壓縮檔案不會看到dir1這個資料夾,只會看到裡面的檔案與子資料夾! 7za"dir1.zip""dir1\*" 如果你用以下命令壓縮,將會看不到dir1與dir2資料夾! 7za"dir1.zip""dir1\dir2\*" 壓縮整個資料夾,並且保留現有檔案的完整路徑 由於7-Zip壓縮過的檔案不會保留「磁碟代號」,你唯一能做的只能保留「路徑」部份而已。

你可以先進入磁碟的根目錄,然後用上述第1種方法來壓縮檔案: CD/DG:\ 7za"dir2.zip""sub1\dir1\dir2" 只壓縮整個資料夾下的特定檔案類型 如果要壓縮限定特定類型的檔案,可以先加上-r參數,再加上不同的檔名樣式(FilePatterns)就可以找出檔案並加入壓縮檔: 7za"dir1.zip""dir1\"-r"dir1\*.aspx" 7za"dir1.zip""dir1\"-r"dir1\*.aspx""dir1\*.dll" 如果要排除特定類型的檔案不要進壓縮檔,可以這樣寫: 7zadir1.zip"dir1\""-xr!*.pdb""-xr!web.config" 將目前資料夾下的所有檔案壓縮到上一層目錄 如果你想壓縮當前目錄,但是壓縮檔不要出現在本資料夾,可以這樣寫: 7za"..\dir1.zip" 不加上任何參數,預設就是把當前目錄全部都壓縮起來,但請記得壓縮檔不要放在當前目錄下! 常用的解壓縮檔案命令與參數 解壓縮到當前目錄 請確保不會弄亂你的資料夾才能用這個方法,因為解出來的東西會跟壓縮檔放在一起! 7zx"dir1.zip" 解壓縮到指定輸出目錄 7zx"dir1.zip"-o"dir1" 請記得習慣在-o參數後面加上"雙引號,這樣就可以確保資料夾路徑中有空白字元也可以正常運作! 7zx"dir1.zip"-o"C:\ProgramFiles\" 注意:在-o與Path中間不能有任何空白字元! 只解壓縮特定檔案類型到指定輸出目錄 以下這個解壓縮命令會保留這些檔案的路徑在指定輸出目錄! 7zx"dir1.zip"-o"dir1"-r"*.dll" 注意:7-Zip並非使用Windows的systemwildcardparser,他並不會真的去比對有沒有這些系統檔案,而是傳入字串到7z命令中,讓7-Zip去比對所有檔案! 擷取特定檔案類型到指定輸出目錄 這裡不說「解壓縮」而說「擷取」是因為7-Zip有個參數e就是Extract(擷取)的意思。

這個參數最大的特點就是【取出的檔案不會保留壓縮檔中的目錄結構】,專門用來讓你取出壓縮檔案中的一個或多個檔案。

以下這個擷取命令會取出所有*.js檔案到指定輸出目錄! 7ze"dir1.zip"-o"dir1"-r"*.js" 如果壓縮檔中檔案很多,很有可能會遇到存在於不同目錄,但是檔名相同的狀況,此時就會出現檔名衝突問你要不要覆蓋的提示。

如果不想提示直接覆蓋,可以加上-y參數: 7ze"dir1.zip"-o"dir1"-r"*.dll"-y 解壓縮時略過壓縮檔中的第一層目錄並指定輸出目錄 7-Zip不像tar有--strip-components=這種強大的進階用法,所以使用上比較沒那麼靈活,需要搭配批次檔進行實作! 如果是PowerShell的話,可以直接這樣執行: 7zx.\MyWebsite.zip cd"MyWebsite" mv"*""C:\Inetpub\wwwroot" cd.. rmdir"MyWebSite" 如果是CommandPrompt的話,建議安裝Chocolatey上有個UnxUtils套件,裡面有超多好用的Linux常見命令的Windows版本,其中當然包含了mv命令! chocoinstallunxutils-y 其他7-Zip進階用法 壓縮檔案時包含解壓縮密碼 壓縮的時候設定一個密碼(-p),解壓縮檔案的時候必須輸入! 7za"dir1.zip""dir1/"-p"1q2w3e4r" 壓縮的時候設定一個密碼(-p),並且將壓縮檔的Header資訊一併加密,也就是連檔名都一起加密,開啟壓縮檔的時候就要先輸入密碼才知道內容!(僅支援*.7z壓縮檔格式) 7za"dir1.7z""dir1/"-p"1q2w3e4r"-mhe 解壓縮一個加密過的壓縮檔到指定輸出目錄 7zx"dir1.7z"-o"dir1/"-p"1q2w3e4r" 列出所有檔案清單 我們在自動化的過程中可能會需要先知道壓縮檔中有什麼檔案,此時可以利用7z的l(List)命令達成這個目的。

7zl"dir1.zip" 顯示壓縮檔中完整的技術資訊 你可以從中看出每個檔案的完整資訊,包含CRC與各種檔案屬性的細節,非常Geek的內容 7zl"dir1.zip"-slt 連同壓縮NTFS的alternatestreams資訊到壓縮檔中(-sns) 我在2008年有介紹過這個東西▶介紹好用工具:Streams讓你瞭解神秘的NTFS檔案系統 壓縮檔案時包含NTFSAlternateStreams 7zaa.wim-sns*.txt 7-Zip解壓縮的時候預設就會包含NTFSAlternateStreams到檔案中 7zxa.wim 不想讓7-Zip解壓縮的時候包含NTFSAlternateStreams可以加上-sns參數 7zxa.wim-sns- 列出壓縮檔案內容時包含NTFSAlternateStreams資訊(加上-sns參數) 7zla.wim-sns 相關連結 7-Zip 7-Zip繁體中文版官方網站 7-ZipCommandLineCommands 相關文章 分享幾個常用的7-Zip壓縮與解壓縮命令 我們最近幾年幾乎所有案子都導入CI/CD,把所有能自動化的工作全部都指令化,所以只要公司需要開發時期用的測試機,或是客戶需要安裝主機,通常都可以在10分鐘內搞定所有環境與設定。

今天這篇文章我要來 透過7-Zip壓縮ZIP檔案時須注意中文檔名無法正確解壓縮的問題 昨天在授課的時候,由於課堂上提供給學員的壓縮檔案中目錄名稱與檔案名稱有中文字的關係,導致全班有3位學員解壓縮之後這些目錄與檔案全部呈現亂碼,無法開啟與閱讀。

經過一番研究之後發現,原來7-Zip 如何利用7-zip設定自動解壓縮並解壓縮後自動啟動程式 我去年有弄一個WinForm的案子,案子完成後要給客戶安裝檔,程式還蠻簡單的,但除了主執行檔外,還有包括幾個相關的檔案,因為我不打算用SetupProject進行部署,而想直接做成「綠色軟體... 工商服務(廣告) 每月文章 2022 八月(10) 七月(11) 六月(4) 五月(10) 四月(5) 三月(9) 二月(9) 一月(15) 2021 十二月(12) 十一月(5) 十月(6) 九月(13) 八月(16) 七月(13) 六月(13) 五月(7) 三月(1) 二月(1) 2020 十二月(3) 十一月(1) 十月(3) 九月(7) 八月(7) 七月(9) 六月(2) 五月(5) 三月(4) 二月(5) 一月(4) 2019 十二月(7) 十一月(2) 十月(5) 九月(1) 六月(3) 四月(4) 三月(3) 二月(7) 一月(12) 2018 十二月(3) 十一月(1) 十月(4) 九月(12) 八月(4) 六月(2) 五月(3) 四月(6) 二月(1) 一月(2) 2017 十二月(2) 十月(3) 九月(4) 七月(1) 六月(1) 五月(1) 四月(1) 二月(3) 一月(4) 2016 十二月(4) 十一月(1) 十月(1) 九月(4) 八月(3) 七月(2) 五月(1) 四月(1) 三月(3) 二月(3) 一月(2) 2015 十二月(6) 十一月(4) 十月(3) 九月(5) 八月(1) 七月(4) 六月(2) 五月(3) 四月(1) 三月(1) 二月(3) 一月(2) 2014 十二月(3) 十一月(2) 十月(3) 九月(3) 八月(1) 七月(4) 六月(2) 五月(4) 四月(5) 三月(4) 二月(1) 一月(7) 2013 十二月(1) 十一月(8) 十月(1) 九月(2) 八月(4) 七月(5) 六月(8) 五月(9) 四月(8) 三月(10) 二月(9) 一月(10) 2012 十二月(4) 十一月(6) 十月(6) 九月(4) 八月(5) 七月(10) 六月(5) 五月(6) 四月(10) 三月(12) 二月(1) 一月(6) 2011 十二月(3) 十一月(7) 十月(8) 九月(14) 八月(15) 七月(10) 六月(10) 五月(11) 四月(11) 三月(13) 二月(14) 一月(13) 2010 十二月(13) 十一月(10) 十月(16) 九月(17) 八月(12) 七月(22) 六月(15) 五月(11) 四月(14) 三月(17) 二月(17) 一月(26) 2009 十二月(16) 十一月(18) 十月(18) 九月(23) 八月(20) 七月(26) 六月(24) 五月(21) 四月(26) 三月(30) 二月(27) 一月(26) 2008 十二月(30) 十一月(31) 十月(31) 九月(29) 八月(31) 七月(31) 六月(30) 五月(30) 四月(31) 三月(31) 二月(29) 一月(33) 2007 十二月(31) 十一月(37) 十月(13) 文章分類 .Net (223) .NETCore (57) Accessibility (3) Angular (25) AngularJS (11) ASP.NET (223) ASP.NET5 (3) ASP.NETBlazor (1) ASP.NETCore (37) ASP.NETIdentity (2) ASP.NETMVC (105) ASP.NETWebAPI (13) AzureDevOps (33) C# (127) CloudComputing (4) CSS (29) DevOps (22) Docker (28) EntityFramework (23) Git (31) Golang (2) HTML5 (8) IIS (103) Java (9) JavaScript (108) Jenkins (7) Kubernetes (15) LINQ (36) Linux (111) MicroK8s (7) MicrosoftAzure (41) MySQL (15) Office (49) Office365 (28) Oracle (10) PHP (25) Scrum (1) Security (65) SQLServer (126) Subversion (35) SystemCenter (2) TFS (6) TFS2010 (10) Tips (189) UnitTesting (10) Usability (1) VBA (5) VisualBasic (5) VisualStudio (122) VisualStudio11 (2) VisualStudio2012 (10) VisualStudio2013 (4) VS2010Tips (23) Web (172) WebMatrix (8) Windows (43) Windows8 (14) WindowsAzure (18) WindowsPhone7 (14) 介紹好用工具 (223) 心得分享 (88) 多奇快訊 (9) 系統管理 (365) 前端工程研究 (20) 專案管理 (8) 團隊合作 (9) 網路管理 (21) 專業證照



請為這篇文章評分?