命令⾏压缩⼯具7z.exe使⽤详解
⼀.简介
7z,全称7-Zip, 是⼀款开源软件。是⽬前公认的压缩⽐例最⼤的压缩解压软件。
主要特征:
# 全新的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
<在Windows cmd窗⼝使⽤说明如下:
7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Usage: 7za <command> [<switches>...] <archive_name> [<file_names>...]
[<@>]
<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
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
-v{Size}[b|k|m|g]: Create volumes
-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>...]
<;参数变量> ::= <;选项> | <;通配符> | <⽂件名> | <⽂件列表>
<;选项>::= <;选项标记><;选项字符>[<;选项>]
<;选项标记> ::= '/' | '-'
<⽂件列表> ::= @{⽂件名}
<arguments> ::= <switch> | <wildcard> | <filename> | <list_file>
<switch>::= <switch_symbol><switch_characters>[<option>]
<switch_symbol> ::= '/' | '-'
<list_file> ::= @{filename}
在⽅括号内的表达式(“[” 和 “]”之间的字符)是可选的。
在书名号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(⽽且要去掉括号)。
表达式
expression1 | expression2 | ... | expressionN
命令⾏及选项使⽤⼤写或⼩写字母都可以。
⾸个命令⾏必须是⽆选项的参数变量。
选项及其它⽂件名的输⼊顺序可以打乱。
带有空格的通配符或⽂件名必须加上引号:
"Dir\Program files\*"
Dir\"Program files"\*
通配符是⼀个键盘字符,例如星号(*)或问号(?),当执⾏添加⽂件、释放⽂件、选定⽂件、删除⽂件等操
作时,您可以使⽤它来代表⼀个或多个字符。当您不知道真正字符或者不想键⼊完整名称时,常常使⽤通配符代替⼀个或多个字符。
7-Zip ⽀持和 Windows 相类似的通配符:
“*”可以使⽤星号代替零个或多个字符。
“?”可以⽤问号代替名称中的单个字符。
7-Zip 使⽤的并不是系统处理通配符的默认⽅法,因⽽ 7-Zip 不⽀持其它通配符规则,在系统中 *.* 相当于所有⽂件。⽽ 7-Zip 会将其视为任何扩展名的全部⽂件。所以,要处理所有⽂件您必须使⽤ * 通配符。
⽰例:
*.txt 这样会查(添加、选定……)所有扩展名是“.txt”的⽂件
a* 这样会查(添加、选定……)所有第⼆个字母为“a”的⽂件
*1* 这样会查(添加、选定……)所有包含“1”的⽂件
*.*.* 这样会查(添加、选定……)所有包含“.”的双扩展名⽂件
如果在命令⾏中没有⽂件名,系统将会使⽤默认通配符“*”。
档案⽂件中通配符及⽂件名的使⽤限制:
通配符及⽂件名不能包括系统盘符或⽹址。每个通配符及⽂件名路径将被视为从盘符到当前⽬录的完整路径/从压缩档案的根⽬录算起的完整路径。换句话说,路径的开始部分(在⾸个斜线(“\”)之前的字符)必须是某个名称或通配符。
通配符及⽂件名不能以斜线(“\”)结尾。
通配符只可以在完整路径的最后⼀部分中出现。
⽰例:
Dir1\*.cpp 正确
c:\Dir1\*.cpp 错误:路径中不能包括盘符
Dir1\Dir2\g?.txt 正确
Dir1\D? 错误:只有在以路径的最后⼀部分才能使⽤通配符
⽂件列表
您可以使⽤⽂件列表来对要操作的⽂件进⾏批量操作。在⽂件中的⽂件名必须⽤空格或另起⼀⾏隔开。(如使⽤空格格开,每⼀个⽂件必须加引号)。
7-Zip 命令⾏⽀持多个⽂件列表同时操作。
举个例⼦,这⾥有⼀个⽂件列表“”包含下列内容:
"My programs\*.cpp"
Src\*.cpp
那么我们可以输⼊命令:
7z a -tzip archive.zip @
将“My programs”及“Src”⽬录中所有扩展名为“cpp”的⽂件添加到压缩档案“archive.zip”中。
命令⾏:
命令⾏的命令不分⼤⼩写。
更多有关命令⾏的详细内容请参阅语法。
命令要点参考
命令作⽤说明
a 添加
d 删除
e 释放
l 列表
t 测试
u 更新
x 完整路径释放
命令⾏选项
语法
<;选项>::= <;选项_符号><;选项_字符>[<;选项>]
<;选项_符号> ::= '/' | '-'
<switch>::= <switch_symbol><switch_characters>[<option>]
<switch_symbol> ::= '/' | '-'
在命令⾏中,⼀个完整的选项由指定的选项、连字符(-)或斜线(/)组成,⽽且选项的符号不能使⽤缩写。
选项名称不区分⼤⼩写。⽽⼀部分选项会包括参数变量,它们是需要区分⼤⼩写的。
选项可以使⽤在命令⾏中的任何位置。
⼆.压缩⽂件⽰例
E:\7za920\7za a -t7z E:\log.7z E:\log\*.log  -m0=BCJ -m1=LZMA:d=21 -ms -mmt
调⽤E:\将E:\log\⽬录下的log⽂件压缩为E:\log.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 -- 递归到所有的⼦⽬录。
三.解压⽂件⽰例
E:\7za920\7za  x -y -aos -oE:\  E:\QZsvr.zip
将E盘QZsvr.zip解压到E盘根⽬录下。
参数说明:
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 <;命令⾏> [<;选项>...] <;基本档案名称> [<;参数变量>...]
在⽅括号内的表达式(“[” 和 “]”之间的字符)是可选的。
在书名号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(⽽且要去掉括号)。
7-Zip ⽀持和 Windows 相类似的通配符:
“*”可以使⽤星号代替零个或多个字符。
“?”可以⽤问号代替名称中的单个字符。
如果只⽤*,7-Zip 会将其视为任何扩展名的全部⽂件。
<的每个命令都有不同的参数<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
dos命令运行exe程序
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.