一.简介
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
命令行版本下载:http://7z.sparanoid.com/download.html
SourceForge下载:http://sourceforge.net/projects/sevenzip/?source=typ_redirect
7z.exe在Windows cmd窗口使用说明如下:
- 7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
- 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
- -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>...]* 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
<选项>::= <选项_符号><选项_字符>[<选项>]
<选项_符号> ::= \'/\' | \'-\'
<switch>::= <switch_symbol><switch_characters>[<option>]
<switch_symbol> ::= \'/\' | \'-\'
在命令行中,一个完整的选项由指定的选项、连字符(-)或斜线(/)组成,而且选项的符号不能使用缩写。, q$ P! D- o" H b" w/ Y3 _# D
选项名称不区分大小写。而一部分选项会包括参数变量,它们是需要区分大小写的。
选项可以使用在命令行中的任何位置。
二.压缩文件示例
- E:\7za920\7za a -t7z E:\log.7z E:\log\*.log -m0=BCJ -m1=LZMA:d=21 -ms -mmt
调用E:\7za920\7za.exe将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。
-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 会将其视为任何扩展名的全部文件。
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.
压缩模式选择:-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
六.命令行退出代码
0 : 正常,没有错误;
1 : 警告,没有致命的错误,例如某些文件正在被使用,没有被压缩;
2 : 致命错误;
7 : 命令行错误;
8 : 没有足够的内存;
255 : 用户停止了操作;
七.其他使用实例
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 文件夹。
八.补充选项
-- 在命令行中使“--”后的选项开关“-”都失效。这样就允许在命令行中使用文件名以“-”开头的文件。
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 压缩档案。
更多的不常用的选项,可以查看帮助chm文档。
例如:
-m设置压缩算法;
-scs 设置要压缩的文件的列表文件的字符集;
-seml通过电子邮件发送压缩档;
-sfx创建自释放档;
-si从标准输入读入数据,
-so从输出到标准输 出;
-slp设置大内存模式;
-slt显示技术信息;
-ssc设置区分大小写;
-ssw压缩正在写入的文件;
-u更新选项。
整理自网络,原文出处:http://blog.csdn.net/embedded_sky/article/details/45201181,BY:super_bert@csdn