【轉】7Z命令列解壓縮

weixin_34162629發表於2017-08-29

7z.exe在CMD視窗的使用說明如下:

7-Zip (A) 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06

Usage: 7za <command> [<switches>...] <archive_name> [<file_names>...]
[<@listfiles...>]

<Commands>
a: Add files to archive
b: Benchmark
d: Delete files from archive
e: Extract files from archive (without using directory names)
l: List contents of archive
t: Test integrity of archive
u: Update files to archive
x: eXtract files with full paths
<Switches>
-ai[r[-|0]]{@listfile|!wildcard}: Include archives
-ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
-bd: Disable percentage indicator
-i[r[-|0]]{@listfile|!wildcard}: Include filenames
-m{Parameters}: set compression Method
-o{Directory}: set Output directory
-p{Password}: set Password
-r[-|0]: Recurse subdirectories
-scs{UTF-8 | WIN | DOS}: set charset for list files
-sfx[{name}]: Create SFX archive
-si[{name}]: read data from stdin
-slt: show technical information for l (List) command
-so: write data to stdout
-ssc[-]: set sensitive case mode
-ssw: compress shared files
-t{Type}: Set type of archive
-v{Size}[b|k|m|g]: Create volumes
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
-w[{path}]: assign Work directory. Empty path means a temporary directory
-x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
-y: assume Yes on all queries

中文使用說明如下:

語法
7z <命令列> [<選項>...] <基本檔案名稱> [<引數變數>...]
7z <command> [<switch>...] <base_archive_name> [<arguments>...]* g8 T1 {- l2 e) P% T' V; A
<引數變數> ::= <選項> | <萬用字元> | <檔名> | <檔案列表>
<選項>::= <選項標記><選項字元>[<選項>]
<選項標記> ::= '/' | '-' 
<檔案列表> ::= @{檔名}( @4 _; F   r6 j. t+ a5 @

<arguments> ::= <switch> | <wildcard> | <filename> | <list_file>
<switch>::= <switch_symbol><switch_characters>[<option>]
<switch_symbol> ::= '/' | '-' 
<list_file> ::= @{filename}
在方括號內的表示式(“[” 和 “]”之間的字元)是可選的。' ?2 k0 k/ m* f. Q$ c4 h
在書名號內的表示式(“<” 和 “>”之間的字元)是必須替換的表示式(而且要去掉括號)。
表示式
expression1 | expression2 | ... | expressionN* R- s: |- P/ n& m9 C
命令列 及 選項 使用大寫或小寫字母都可以。
首個命令列必須是無選項的引數變數。
選項及其它檔名的輸入順序可以打亂。
帶有空格的萬用字元或檔名必須加上引號:
"Dir\Program files\*"+ r+ u2 k   b' Z& U. n
Dir\"Program files"\*. M   R   V3 S/ s
萬用字元是一個鍵盤字元,例如星號(*)或問號(?),當執行新增檔案、釋放檔案、選定檔案、刪除檔案等操作時,您可以使用它來代表一個或多個字元。當您不知道真正字元或者不想鍵入完整名稱時,常常使用萬用字元代替一個或多個字元。
7-Zip 支援和 Windows 相類似的萬用字元:
“*”可以使用星號代替零個或多個字元。 
“?”可以用問號代替名稱中的單個字元。 
7-Zip 使用的並不是系統處理萬用字元的預設方法,因而 7-Zip 不支援其它萬用字元規則,在系統中 *.* 相當於所有檔案。而 7-Zip 會將其視為任何副檔名的全部檔案。所以,要處理所有檔案您必須使用 * 萬用字元。
示例:
*.txt 這樣會查詢(新增、選定……)所有副檔名是“.txt”的檔案 / z9 x0 }' d, B, s# z
?a* 這樣會查詢(新增、選定……)所有第二個字母為“a”的檔案 / f+ ^8 N7 S% b. b' Q
*1* 這樣會查詢(新增、選定……)所有包含“1”的檔案 3 W# Q" f   C* h   E6 n
*.*.* 這樣會查詢(新增、選定……)所有包含“.”的雙副檔名檔案 
如果在命令列中沒有檔名,系統將會使用預設萬用字元“*”。* K. J# R7 u) w7 n3 A6 ?
檔案檔案中萬用字元及檔名的使用限制:
萬用字元及檔名不能包括系統碟符或網址。每個萬用字元及檔名路徑將被視為從碟符到當前目錄的完整路徑/從壓縮檔案的根目錄算起的完整路徑。換句話說,路徑的開始部分(在首個斜線(“\”)之前的字元)必須是某個名稱或萬用字元。 1 [% e: w/ V/ g, l" t0 N
萬用字元及檔名不能以斜線(“\”)結尾。 
萬用字元只可以在完整路徑的最後一部分中出現。 ' M) Q' ~9 v2 O; m2 I9 _$ G2 D, U" b
示例:
Dir1\*.cpp 正確 
c:\Dir1\*.cpp 錯誤:路徑中不能包括碟符 
Dir1\Dir2\g?.txt 正確 ; i7 Q+ P) e2 F8 g
Dir1\D?r2\file1.txt 錯誤:只有在以路徑的最後一部分才能使用萬用字元 
檔案列表: l   Z$ }; P4 O
您可以使用檔案列表來對要操作的檔案進行批量操作。在檔案中的檔名必須用空格或另起一行隔開。(如使用空格格開,每一個檔案必須加引號)。
7-Zip 命令列支援多個檔案列表同時操作。2 Y+ k2 G9 |2 g: p. x2 M' Z
舉個例子,這裡有一個檔案列表“listfile.txt”包含下列內容:" I! Z) }. C7 k/ H4 g; u' @+ Q
"My programs\*.cpp"5 v; @* F) U5 ]$ k3 H6 J! b* N
Src\*.cpp
那麼我們可以輸入命令:
7z a -tzip archive.zip @listfile.txt
將“My programs”及“Src”目錄中所有副檔名為“cpp”的檔案新增到壓縮檔案“archive.zip”中。


命令列
命令列的命令不分大小寫。
更多有關命令列的詳細內容請參閱 語法。
命令要點參考
命令 作用說明 
a 新增 . M% Z1 A/ G8 y: S9 d* c
d 刪除 : j9 _   _2 ~$ W, W2 m: U
e 釋放 - Y7 {! I   _( K$ y
l 列表 4 w& j5 K   X4 }+ Y# A) d* k: S
t 測試 . h: w& C4 ~- P* o+ @
u 更新 
x 完整路徑釋放 
& `- O( ]   M. T' k   x0 `
命令列選項/ }1 o6 h9 v9 B2 V9 |9 q' R. y
語法   V* Y, `+ p( K5 b
<選項>::= <選項_符號><選項_字元>[<選項>]
<選項_符號> ::= '/' | '-' 
&ltswitch>::= <switch_symbol><switch_characters>[<option>]
<switch_symbol> ::= '/' | '-'
在命令列中,一個完整的選項由指定的選項、連字元(-)或斜線(/)組成,而且選項的符號不能使用縮寫。, q$ P! D- o" H   b" w/ Y3 _# D
選項名稱不區分大小寫。而一部分選項會包括引數變數,它們是需要區分大小寫的。
選項可以使用在命令列中的任何位置。##

 

參考greegree的文章先給出一個壓縮檔案的例子:

7z a -t7z archive.7z *.exe *.dll -m0=BCJ -m1=LZMA:d=21 -ms -mmt

    新增 *.exe 及 *.dll 檔案到固實壓縮檔案 archive.7z。使用 LZMA 壓縮演算法、2 MB 字典大小及 BCJ 轉換器。壓縮將開啟多執行緒優化(如果可用)。

   -ms 預設設定固真實模式。在建立固實壓縮檔案模式中,它把壓縮檔案中的所有檔案都當成一個連續資料流來看待。通常情況下,固實壓縮可增加壓縮比,特別是在新增大量小檔案的時候
-mmt 預設開啟多執行緒模式。    
以上兩條倒是可以理解,但是“-m0=BCJ -m1=LZMA:d=21 ”又該如何解釋?
按照給出的中文的文件說明:
-m0=BCJ -- 第一個備選的壓縮演算法為BCJ
-m1=LZMA:d=21 -- 第二個備選的壓縮演算法為LZMA,指定字典大小為預設的21(2MB的1次方)2MB。

 

如果:想要使用最大化壓縮,可以使用下面的引數選項:

    7z a -t7z DriverTest_1.7z "I:\t\t1\*" -mx=9 -ms=200m -mf -mhc -mhcf -m0=LZMA:a=2:d=25:mf=bt4b:fb=64 -mmt -r

-t7z -- 壓縮檔案的格式為7z
-mx=9 -ms=200m -mf -mhc -mhcf -m0=LZMA:a=2:d=25:mf=bt4b:fb=64 -mmt
-- 指定壓縮演算法選項
-mx=9 -- 設定壓縮等級為極限壓縮(預設為:LZMA 最大演算法、32 MB 字典大小、BT4b Match finder、單詞大小為 64、BCJ2 過濾器)
-ms=200m -- 開啟固真實模式,設定固實資料流大小為200MB。
-mf -- 開啟可執行檔案壓縮過濾器。
-mhc -- 開啟檔案檔案頭壓縮。
-mhcf -- 開啟檔案檔案頭完全壓縮。我所使用的7z版本為4.42>2.30。
-m0=LZMA:a=2:d=25:mf=bt4b:fb=64
-- 第一個備選壓縮演算法為LZMA,壓縮等級為最大壓縮,LZMA演算法使用的字典大小為25(2MB的5次方)32MB,演算法的匹配器為bt4b(所需要記憶體為d×9.5 + 34 MB),壓縮演算法的緊湊位元組為最大模式的64位元組。
-mmt -- 開啟多執行緒模式。
-r -- 遞迴到所有的子目錄。

7z命令解壓檔案的例子:解壓File.7z檔案到目錄Mydir。

7z x "d:\File.7z" -y -aos -o"d:\Mydir"

引數說明:

x:完整路徑下解壓檔案

-y:所有確認選項都預設為是(即不出現確認提示)

-aos:跳過已存在的檔案

-o:設定輸出目錄

關於記憶體的使用:

一般來說,WindowsXP至少使用80~160MB的記憶體,為了保證系統的執行正常,還要留夠32MB的剩餘實體記憶體。
所以如果是512MB的記憶體,那麼7z壓縮所使用的記憶體為(512-32-160)320MB,使用bt4b(d*9.5+34MB),所以d=32MB。
如果是256MB的記憶體,那麼7z壓縮所使用的記憶體為(256-32-120)104MB,使用bt4b(d*9.5+34MB),所以d=8MB。
由此可見,在WindowsXP的圖形介面下要想得到更大的壓縮比,或者擴大實體記憶體的容量,或者可以採用在DOS下執行32位程式的方法;否則無論你的虛擬記憶體或者系統的磁碟快取設定得再大,只能看見硬碟燈狂閃得交換頁面檔案。
通常情況下,較大的字典檔案能提供較高的壓縮比。但是在壓縮和解壓縮的時候會比較慢而且需要較多的實體記憶體:壓縮時所使用的實體記憶體約為字典檔案的10倍,解壓縮時所使用的實體記憶體約等於字典檔案大小。

語法格式:(詳細情況見7-zip幫助檔案,看得頭暈可以跳過,用到再學) 
7z <command> [<switch>...] <base_archive_name> [<arguments>...] 

7z.exe的每個命令都有不同的引數<switch>,請看幫助檔案 
<base_archive_name>為壓縮包名稱 
<arguments>為檔名稱,支援萬用字元或檔案列表 
a: 新增檔案的壓縮包,或者建立新的壓縮包。 

d: 從壓縮包中刪除檔案。 

e: 從壓縮包中提取。 

t: 測試壓縮包的是否出錯。 

u: 更新壓縮包中的檔案。 
其中,7z是至命令列壓縮解壓程式7z.exe,<command>是7z.exe包含的命令,列舉如下: 

a: Adds files to archive. 新增至壓縮包 
a命令可用引數: 
-i (Include) 
-m (Method) 
-p (Set Password) 
-r (Recurse) 
-sfx (create SFX) 
-si (use StdIn) 
-so (use StdOut) 
-ssw (Compress shared files) 
-t (Type of archive) 
-u (Update) 
-v (Volumes) 
-w (Working Dir) 
-x (Exclude) 


b: Benchmark 

d: Deletes files from archive. 從壓縮包中刪除檔案 
d命令可用引數: 
-i (Include) 
-m (Method) 
-p (Set Password) 
-r (Recurse) 
-u (Update) 
-w (Working Dir) 
-x (Exclude) 

e: Extract解壓檔案至當前目錄或指定目錄 
e命令可用引數: 
-ai (Include archives) 
-an (Disable parsing of archive_name) 
-ao (Overwrite mode) 
-ax (Exclude archives) 
-i (Include) 
-o (Set Output Directory) 
-p (Set Password) 
-r (Recurse) 
-so (use StdOut) 
-x (Exclude) 
-y (Assume Yes on all queries) 

l: Lists contents of archive. 
t: Test 
u: Update 

x: eXtract with full paths用檔案的完整路徑解壓至當前目錄或指定目錄 
x命令可用引數: 
-ai (Include archives) 
-an (Disable parsing of archive_name) 
-ao (Overwrite mode) 
-ax (Exclude archives) 
-i (Include) 
-o (Set Output Directory) 
-p (Set Password) 
-r (Recurse) 
-so (use StdOut) 
-x (Exclude) 
-y (Assume Yes on all queries) 
-m (Set compression Method) switch 
Specifies the compression method.


用7-ZIP實現批處理 命令列壓縮和解壓功能 

編輯一個.bat檔案;每行這樣寫,就可以連續壓制多個目錄了
7z a -mx9 -md64m -mfb=273 -slp -ssw -v1024m -mmt=2 -r
{路徑及7z檔名} {路徑及要壓縮的檔名及路徑 可以空格填多個}

例子:建議以成對雙引號來包壓縮檔名和路徑名
7z a -mx9 -md64m -mfb=273 -slp -ssw -v1024m "game" "d:\game\*.*"
把d:\game\ 以ultra模式 64m字典fb273 每分卷1024m模式壓縮

-mxN N=0~9 ;壓縮模式選擇
Level Method Dictionary FastBytes MatchFinder Filter Description 
0 Copy No compression. 
1 LZMA 64 KB 32 HC4 BCJ Fastest compressing 
3 LZMA 1 MB 32 HC4 BCJ Fast compressing 
5 LZMA 16 MB 32 BT4 BCJ Normal compressing 
7 LZMA 32 MB 64 BT4 BCJ Maximum compressing 
9 LZMA 64 MB 64 BT4 BCJ2 Ultra compressing -mdNm 填字典大小 比如填26 和填64m一樣的;看說明更大記憶體也可以填,比如128m字典
最大1024m

The maximum value for dictionary size is 1 GB = 2^30 bytes. Default values for LZMA are 24 (16 MB) in normal mode, 25 (32 MB) in maximum mode (-mx=7) and 26 (64 MB) in ultra mode (-mx=9). 

-mfb=N 填fastbytes大小,此數字增大會稍微加大壓縮但減慢速度

-slp (Set Large Pages mode);會加快壓縮,但開始會卡下,This feature works only on Windows 2003 / XP x64

-ssw 也壓縮共享檔案

-v (Create Volumes) switch
Specifies volume sizes.
Syntax
-v{Size}[b | k | m | g]

-mmt=N 多核選項,比如雙核填2


命令列壓縮解壓一 7z

1) 簡介
7z,全稱7-Zip, 是一款開源軟體。是目前公認的壓縮比例最大的壓縮解壓軟體。
主頁:http://www.7-zip.org/
中文主頁:http://7z.sparanoid.com/
命令列版本下載:http://7z.sparanoid.com/download.html
主要特徵:
# 全新的LZMA演算法加大了7z格式的壓縮比
# 支援格式:
* 壓縮 / 解壓縮:7z, XZ, BZIP2, GZIP, TAR, ZIP
* 僅解壓縮:ARJ, CAB, CHM, CPIO, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, UDF, VHD, WIM, XAR, Z

2)退出程式碼
0 : 正常,沒有錯誤;
1 : 警告,沒有致命的錯誤,例如某些檔案正在被使用,沒有被壓縮;
2 : 致命錯誤;
7 : 命令列錯誤;
8 : 沒有足夠的記憶體;
255 : 使用者停止了操作;

3)使用語法
7z <命令列> [<選項>...] <基本檔案名稱> [<引數變數>...]

在方括號內的表示式(“[” 和 “]”之間的字元)是可選的。
在書名號內的表示式(“<” 和 “>”之間的字元)是必須替換的表示式(而且要去掉括號)。

7-Zip 支援和 Windows 相類似的萬用字元:
“*”可以使用星號代替零個或多個字元。 
“?”可以用問號代替名稱中的單個字元。
如果只用*,7-Zip 會將其視為任何副檔名的全部檔案。

4)命令及例項

a 新增檔案到壓縮檔案。
7z a archive1.zip subdir\ :增加subdir資料夾下的所有的檔案和子資料夾到archive1.zip中,archived1.zip中的檔名包含subdir\字首。
7z a archive2.zip .\subdir\* :增加subdir資料夾下的所有的檔案和子資料夾到archive1.zip中,archived2.zip中的檔名不包含subdir\字首。
cd /D c:\dir1\ 
7z a c:\archive3.zip dir2\dir3\ :archiive3.zip中的檔名將包含dir2\dir3\字首,但是不包含c:\dir1字首。
7z a Files.7z *.txt -r : 增加當前資料夾及其子資料夾下的所有的txt檔案到Files.7z中。

b 測試 CPU 執行速度及檢查記憶體錯誤。

d 從壓縮檔案刪除檔案。
7z d archive.zip *.bak -r :從archive.zip中刪除所有的bak檔案。

e 從壓縮檔案中釋放檔案到當前目錄中。或者到指定的輸出資料夾。輸出資料夾設定可以通過 -o (設定輸出資料夾) 選項來更改。此命令會將所有被釋放的檔案放置到一個資料夾。如果您想使用完整路徑釋放檔案,您必須使用 x (完整路徑釋放) 命令。 
7z e archive.zip :從壓縮檔案 archive.zip 中釋放所有檔案到當前資料夾。
7z e archive.zip -oc:\soft *.cpp :從壓縮檔案 archive.zip 中釋放 *.cpp 檔案到 c:\soft 資料夾。

l 列出壓縮檔案內容。
7z l archive.zip :列出壓縮檔案 archive.zip 的內容。

t 測試壓縮檔案檔案的完整性。
7z t archive.zip *.doc :在壓縮檔案 archive.zip 中測試 *.doc 檔案的完整性。

u 在壓縮檔案檔案中使用較新的檔案替換掉較舊的檔案。
7z u archive.zip *.doc :在壓縮檔案 archive.zip 中更新 *.doc 檔案。

x 在當前目錄中,使用完整路徑從壓縮檔案中釋放檔案.或者到指定的輸出資料夾。
7z x archive.zip :從壓縮檔案 archive.zip 中釋放所有檔案到當前資料夾。
7z x archive.zip -oc:\soft *.cpp :從壓縮檔案 archive.zip 中釋放 *.cpp 檔案到 c:\soft 資料夾。

5)更多的選項

-- 在命令列中使“--”後的選項開關“-”都失效。這樣就允許在命令列中使用檔名以“-”開頭的檔案。
7z t -- -ArchiveName.7z :測試 -ArchiveName.7z 壓縮檔案.

-i指定壓縮時附加檔案或一類檔案。此選項可附件新增多個型別。
i[<recurse_type>]<file_ref> 其中<recurse_type>為可以為r[- | 0](具體的-r選項見後面-r),<file_ref>可以為@{listfile} | !{wildcard}。
7z a -tzip src.zip *.txt -ir!DIR1\*.cpp :從當前目錄中新增 *.txt 檔案,和 DIR1 目錄及其子目錄中的 *.cpp 檔案到 src.zip 壓縮檔案。

-x 指定某一檔案或某一類檔案從操作中排除。此選項可同時排除多個型別。
x[<recurse_type>]<file_ref> 其中<recurse_type>為可以為r[- | 0](具體的-r選項見後面-r),<file_ref>可以為@{listfile} | !{wildcard}。
7z a -tzip archive.zip *.txt -x!temp.* :新增除 temp.* 檔案之外的所有 *.txt 檔案到壓縮檔案 archive.zip。

-o 指定釋放檔案的輸出資料夾。此選項只能和釋放命令配合使用。
7z x archive.zip -oc:\Doc :從 archive.zip 壓縮檔案釋放所有檔案到 c:\Doc 資料夾。

-r 遞迴子目錄選項。
-r 開啟遞迴子目錄。對於 e (釋放)、l (列表)、t (測試)、x (完整路徑釋放) 這些在壓縮檔案中操作的命令, 會預設使用此選項。 
-r- 關閉遞迴子目錄。對於 a (新增)、d (刪除)、u (更新) 等所有需掃描磁碟檔案的命令,會預設使用此選項。 
-r0 開啟遞迴子目錄。但只應用於萬用字元。 
7z l archive.zip -r- *.doc :列出在 archive.zip 壓縮檔案中根目錄下的 *.doc 檔案。 
7z a -tzip archive.zip -r src\*.cpp src\*.h :將 src 目錄及其子目錄中的 *.cpp 及 *.h 檔案新增到 archive.zip 壓縮檔案。

-t 指定壓縮檔案格式。指定壓縮檔案格式。它們可以是:zip、7z、rar、cab、gzip、bzip2、tar 或其它格式。而 預設值是 7z 格式。 
7z a -tzip archive.zip *.txt :使用 zip 格式從當前目錄中新增所有 *.txt 檔案到壓縮檔案 archive.zip。

-y 使 7-Zip 執行命令時的大多數提示失效。您可以使用此選項來阻止在 e (釋放) 和 x (完整路徑釋放) 命令中檔案覆蓋時的提示。
7z x src.zip -y :從 src.zip 釋放所有檔案。所有的覆蓋提示將被阻止且所有相同檔名的檔案將被覆蓋。

-v指定分卷大小。
{Size}[b | k | m | g] 
指定分卷大小,可以使用位元組、KB(1 KB=1024 位元組),MB(1 MB = 1024 KB)或 GB(1 GB = 1024 MB)。如果您只指定了 {Size},7-zip 將把它視為字。 
7z a a.7z *.txt -v10k -v15k -v2m : 建立 a.7z 分卷壓縮檔案。第一個分卷為 10 KB,第二個為 15 KB,剩下全部為 2 MB。

-p 指定密碼。
7z x archive.zip -psecret :將設有密碼“secret”的壓縮檔案 archive.zip 中所有檔案釋放。

-ao 指定在釋放期間如何覆蓋硬碟上現有的同名檔案。
語法:-ao[a | s | u ]
-aoa 直接覆蓋現有檔案,而沒有任何提示。 
-aos 跳過現有檔案,其不會被覆蓋。 
-aou 如果相同檔名的檔案以存在,將自動重新命名被釋放的檔案。舉個例子,檔案 file.txt 將被自動重新命名為 file_1.txt。 
-aot 如果相同檔名的檔案以存在,將自動重新命名現有的檔案。舉個例子,檔案 file.txt 將被自動重新命名為 file_1.txt。 
7z x test.zip -aoa :從壓縮檔案 test.zip 中釋放所有檔案並卻不做提示直接覆蓋現有檔案。

-an 不解析命令列中的 archive_name 區域。此選項必須和 -i (附加檔案) 開關一起使用。比如您為壓縮檔案使用列表檔案,您就需要指定 -ai 選項,所以您需要禁止解析命令列中的 archive_name 區域。
例項見後面的-ai和-ax中。

-ai 指定附加檔案,包括壓縮檔案檔名及萬用字元。此選項可同時附加多個型別。
ai[<recurse_type>]<file_ref> 其中<recurse_type>為可以為r[- | 0](具體的-r選項見後面-r),<file_ref>可以為@{listfile} | !{wildcard}。
7z t -an -air!*.7z : 在當前目錄及子目錄下測試 *.7z 壓縮檔案。

-ax 指定必須從操作中排除的壓縮檔案。此選項可同時排除多個型別。
ax[<recurse_type>]<file_ref> 其中<recurse_type>為可以為r[- | 0](具體的-r選項見後面-r),<file_ref>可以為@{listfile} | !{wildcard}。
7z t -an -ai!*.7z -ax!a*.7z :測試除 a*.7z 之外的 *.7z 壓縮檔案。

更多的不常用的選項,可以檢視幫助。例如:-m設定壓縮演算法;-scs 設定要壓縮的檔案的列表檔案的字符集;-seml通過電子郵件傳送壓縮檔;-sfx建立自釋放檔;-si從標準輸入讀入資料,-so從輸出到標準輸 出;-slp設定大記憶體模式;-slt顯示技術資訊;-ssc設定區分大小寫;-ssw壓縮正在寫入的檔案;-u更新選項。

 以下為加壓縮幫助類
public class ZipHelper  
{  
    // Fields  
    private string _7zInstallPath = @"C:\Program Files\7-Zip\7za.exe";  
  
    // Methods  
    public ZipHelper(string str7zInstallPath)  
    {  
        this._7zInstallPath = str7zInstallPath;  
    }  
  
    /// <summary>  
    /// 壓縮資料夾目錄  
    /// </summary>  
    /// <param name="strInDirectoryPath">指定需要壓縮的目錄,如C:\test\,將壓縮test目錄下的所有檔案</param>  
    /// <param name="strOutFilePath">壓縮後壓縮檔案的存放目錄</param>  
    public void CompressDirectory(string strInDirectoryPath, string strOutFilePath)  
    {  
        Process process = new Process();  
        process.StartInfo.FileName = this._7zInstallPath;  
        process.StartInfo.Arguments = " a -t7z " + strOutFilePath + " " + strInDirectoryPath + " -r";  
        //隱藏DOS視窗  
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;  
        process.Start();  
        process.WaitForExit();  
        process.Close();  
    }  
  
    /// <summary>  
    /// 壓縮檔案  
    /// </summary>  
    /// <param name="strInFilePath">指定需要壓縮的檔案,如C:\test\demo.xlsx,將壓縮demo.xlsx檔案</param>  
    /// <param name="strOutFilePath">壓縮後壓縮檔案的存放目錄</param>  
    public void CompressFile(string strInFilePath, string strOutFilePath)  
    {  
        Process process = new Process();  
        process.StartInfo.FileName = this._7zInstallPath;  
        process.StartInfo.Arguments = " a -t7z " + strOutFilePath + " " + strInFilePath + "";  
        //隱藏DOS視窗  
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;  
        process.Start();  
        process.WaitForExit();  
        process.Close();  
    }  
  
    /// <summary>  
    /// 解壓縮  
    /// </summary>  
    /// <param name="strInFilePath">壓縮檔案的路徑</param>  
    /// <param name="strOutDirectoryPath">解壓縮後檔案的路徑</param>  
    public void DecompressFileToDestDirectory(string strInFilePath, string strOutDirectoryPath)  
    {  
        Process process = new Process();  
        process.StartInfo.FileName = this._7zInstallPath;  
        process.StartInfo.Arguments = " x " + strInFilePath + " -o" + strOutDirectoryPath + " -r ";  
        //隱藏DOS視窗  
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;  
        process.Start();  
        process.WaitForExit();  
        process.Close();  
    }  
  
}  

 

相關文章