7z,全称7-Zip, 是一款开源软件。是目前公认的压缩比例最大的压缩解压软件。
主页:http://www.7-zip.org/
中文主页:http://sparanoid.com/lab/7z/
命令行版本下载:http://7z.sparanoid.com/download.html
7-zip主要特征:
7z格式主要特征:
0 : 正常,没有错误;
1 : 警告,没有致命的错误,例如某些文件正在被使用,没有被压缩;
2 : 致命错误;
7 : 命令行错误;
8 : 没有足够的内存;
255 : 用户停止了操作;
7z <命令行> [<选项>…] <基本档案名称> [<参数变量>…]
在方括号内的表达式(“[” 和 “]”之间的字符)是可选的。
在书名号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(而且要去掉括号)。
7-Zip 支持和 Windows 相类似的通配符:
“*”可以使用星号代替零个或多个字符。
“?”可以用问号代替名称中的单个字符。
如果只用*,7-Zip 会将其视为任何扩展名的全部文件。
7-Zip [32] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
Usage: 7z <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)
h : Calculate hash values for files
i : Show information about supported formats
l : List contents of archive
rn : Rename files in archive
t : Test integrity of archive
u : Update files to archive
x : eXtract files with full paths
<Switches>
-- : Stop switches parsing
-ai[r[-|0]]{
@listfile|!wildcard} : Include archives
-ax[r[-|0]]{
@listfile|!wildcard} : eXclude archives
-ao{
a|s|t|u} : set Overwrite mode
-an : disable archive_name field
-bb[0-3] : set output log level
-bd : disable progress indicator
-bs{
o|e|p}{
0|1|2} : set output stream for output/error/progress line
-bt : show execution time statistics
-i[r[-|0]]{
@listfile|!wildcard} : Include filenames
-m{
Parameters} : set compression Method
-mmt[N] : set number of CPU threads
-o{
Directory} : set Output directory
-p{
Password} : set Password
-r[-|0] : Recurse subdirectories
-sa{
a|e|s} : set Archive name mode
-scc{
UTF-8|WIN|DOS} : set charset for for console input/output
-scs{
UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{
id}} : set charset for list files
-scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands
-sdel : delete files after compression
-seml[.] : send archive by email
-sfx[{
name}] : Create SFX archive
-si[{
name}] : read data from stdin
-slp : set Large Pages mode
-slt : show technical information for l (List) command
-snh : store hard links as links
-snl : store symbolic links as links
-sni : store NT security information
-sns[-] : store NTFS alternate streams
-so : write data to stdout
-spd : disable wildcard matching for file names
-spe : eliminate duplication of root folder for extract command
-spf : use fully qualified file paths
-ssc[-] : set sensitive case mode
-ssw : compress shared files
-stl : set archive timestamp from the most recently modified file
-stm{
HexMask} : set CPU thread affinity mask (hexadecimal number)
-stx{
Type} : exclude archive type
-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 a archive1.zip subdir\ :增加subdir文件夹下的所有的文件和子文件夹到archive1.zip中,archived1.zip中的文件名包含subdir\前缀。
7z a archive2.zip .\subdir\* :增加subdir文件夹下的所有的文件和子文件夹到archive1.zip中,archived2.zip中的文件名不包含subdir\前缀。
7z a c:\archive3.zip dir2\dir3\ :archiive3.zip中的文件名将包含dir2\dir3\前缀,但是不包含c:\dir1前缀。
7z a Files.7z *.txt -r : 增加当前文件夹及其子文件夹下的所有的txt文件到Files.7z中。
7z d archive.zip *.bak -r :从archive.zip中删除所有的bak文件。
或者到指定的输出文件夹。输出文件夹设置可以通过 -o (设置输出文件夹) 选项来更改。此命令会将所有被释放的文件放置到一个文件夹。如果您想使用完整路径释放文件,您必须使用 x (完整路径释放) 命令。
7z e archive.zip :从压缩档案 archive.zip 中释放所有文件到当前文件夹。
7z e archive.zip -oc:\soft *.cpp :从压缩档案 archive.zip 中释放 *.cpp 文件到 c:\soft 文件夹。
7z l archive.zip :列出压缩档案 archive.zip 的内容。
7z t archive.zip *.doc :在压缩档案 archive.zip 中测试 *.doc 文件的完整性。
7z u archive.zip *.doc :在压缩档案 archive.zip 中更新 *.doc 文件。
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[
7z a -tzip src.zip *.txt -ir!DIR1\*.cpp :从当前目录中添加 *.txt 文件,和 DIR1 目录及其子目录中的 *.cpp 文件到 src.zip 压缩档案。
x[
7z a -tzip archive.zip *.txt -x!temp.* :添加除 temp.* 文件之外的所有 *.txt 文件到压缩档案 archive.zip。
7z x archive.zip -oc:\Doc :从 archive.zip 压缩档案释放所有文件到 c:\Doc 文件夹。
-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 压缩档案。
它们可以是:zip、7z、rar、cab、gzip、bzip2、tar 或其它格式。而 默认值是 7z 格式。
7z a -tzip archive.zip *.txt :使用 zip 格式从当前目录中添加所有 *.txt 文件到压缩档案 archive.zip。
您可以使用此选项来阻止在 e (释放) 和 x (完整路径释放) 命令中文件覆盖时的提示。
7z x src.zip -y :从 src.zip 释放所有文件。所有的覆盖提示将被阻止且所有相同文件名的文件将被覆盖。
{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。
7z x archive.zip -psecret :将设有密码“secret”的压缩档案 archive.zip 中所有文件释放。
语法:-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 中释放所有文件并却不做提示直接覆盖现有文件。
此选项必须和 -i (附加文件) 开关一起使用。比如您为压缩档案使用列表文件,您就需要指定 -ai 选项,所以您需要禁止解析命令行中的 archive_name 区域。
实例见后面的-ai和-ax中。
ai[
7z t -an -air!*.7z : 在当前目录及子目录下测试 *.7z 压缩档案。
ax[
7z t -an -ai!*.7z -ax!a*.7z :测试除 a*.7z 之外的 *.7z 压缩档案。
更多的不常用的选项,可以查看帮助。
例如:-m设置压缩算法;
-scs 设置要压缩的文件的列表文件的字符集;
-seml通过电子邮件发送压缩档;
-sfx创建自释放档;
-si从标准输入读入数据,
-so从输出到标准输 出;
-slp设置大内存模式;
-slt显示技术信息;
-ssc设置区分大小写;
-ssw压缩正在写入的文件;-u更新选项。
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 – 递归到所有的子目录。
压缩打包格式(2010-11-18) | 压缩打包格式(2016-10-04) | 压缩打包格式(2018-12-30) | 压缩打包格式(2019-02-21) |
---|---|---|---|
APM Arj bzip2 Cpio CramFS Deb Dmg ELF FAT FLV gzip Lzh lzma lzma86 MachO MBR MsLZ Mub NTFS PE Ppmd Rpm Split SWFc SWF SquashFS VHD Xar xz Z 7z Cab Chm Compound HFS Iso Nsis Rar tar Udf wim zip |
APM 7z Ar Arj bzip2 Chm Cab Hxs Compound CramFS Cpio Dmg Ext ELF FAT FLV gzip GPT HFS IHex Iso Lzh lzma lzma86 MachO MBR MsLZ Mub Nsis NTFS PE TE Ppmd QCOW Rar5 Rar Rpm Split SquashFS SWFc SWF tar Udf UEFIc UEFIf VDI VHD VMDK wim Xar xz Z zip |
APM Ar Arj bzip2 Compound Cpio CramFS Dmg ELF Ext FAT FLV gzip GPT HFS IHex Lzh lzma lzma86 MachO MBR MsLZ Mub NTFS PE COFF TE Ppmd QCOW Rpm Split SquashFS SWFc SWF UEFIc UEFIf VDI VHD VMDK Xar xz Z 7z Cab Chm Hxs Iso Nsis Rar Rar5 tar Udf wim zip |
7z APM Ar Arj bzip2 Cab Chm Hxs Compound Cpio CramFS Dmg ELF Ext FAT FLV GPT gzip HFS IHex Iso Lzh lzma lzma86 MachO MBR MsLZ Mub Nsis NTFS PE COFF TE Ppmd QCOW Rar5 Rar Rpm Split SquashFS SWFc SWF tar Udf UEFIc UEFIf VDI VHD VMDK wim Xar xz Z zip |
压缩方法 | 头部校验方式 |
---|---|
BCJ2 BCJ PPC IA64 ARM ARMT SPARC Swap2 Swap4 BZip2 Copy Deflate64 Deflate Delta LZMA2 LZMA PPMD Rar1 Rar2 Rar3 Rar5 7zAES AES256CBC |
CRC32 SHA1 SHA256 CRC64 BLAKE2sp |
压缩算法 | 备注 |
---|---|
LZMA | 改良与优化后的 LZ77 算法 |
LZMA2 | 改良的 LZMA 算法 |
PPMD | 基于 Dmitry Shkarin 的 PPMdH 算法 |
BCJ | 32 位 x86 可执行文件转换程序 |
BCJ2 | 32 位 x86 可执行文件转换程序 |
BZip2 | 标准 BWT 算法 |
Deflate | 标准 LZ77-based 算法 |
LZMA 算法是 7z 格式的默认算法。LZMA 算法具有以下主要特征:
https://www.cnblogs.com/qanholas/archive/2011/10/03/2198487.html