7z是一款免费开源的数据压缩解压软件,一般的私人或公司的软件使用,都可以使用该软件,来替换Zip或RAR这些商用软件。
7z可以通过编程的命令,进行固定方式的压缩,来满足数据备份或存档的需求。
7z有两个版本,一个是标准的版本,可以在7z官网下载,该版本包含基本的压缩算法。
另一个版本是7-Zip Zstandard Edition,这个版本拥用更多的压缩算法,例如ZStandard, Brotli, LZ4, LZ5 ,Lizard,Fast LZMA2,这些算法中,LZ4是压缩速度最快的算法,而Fast LZMA2是在保证速度的情况下压缩比最高的算法,这个可以在7-zip-zstd的Github上下载。
安装完,7-zip-ZStandard的版本有下面的文件:主要的文件有7z.exe和7z.dll这两个是命令行应用,7zFM.exe和7zG.exe是UI的应用程序,最终还是通过参数去调用7z.exe。
7z.exe是一个带参数命令行应用程序,可以通过bat或编程,控制7z的压缩解压过程,以及过程的算法及其参数。7z的命令行参数说明如下:
Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]
<Commands> 命令行带的 命令参数
a : Add files to archive 增加文件到7z的压缩档案中去,压缩一般都会用到该参数
b : Benchmark 检验7z的性能,一般不用
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 显示支持的文件格式,如果不知道7z有什么参数可以使用,比较常用
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 and @listfile parsing 停掉哪个开关,即不开
-ai[r[-|0]]{@listfile|!wildcard} : Include archives 包含档案文件,用于输入压缩
-ax[r[-|0]]{@listfile|!wildcard} : eXclude archives 解压的档案文件,用于输出解压
-ao{a|s|t|u} : set Overwrite mode 设置是否覆盖之前的内容,一般都会用-aoa表示全覆盖
-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 设置压缩的算法,常用,设置方法"-m=LZMA2",表示用LZMA2压缩算法,有什么算法可以用命令“7z i”显示
-mmt[N] : set number of CPU threads 设置用多少个线程进行计算,常用,设置方法“-mnt4”,表示4个线程
-mx[N] : set compression level: -mx1 (fastest) ... -mx9 (ultra) 设置压缩的级别,和算法相关,级别越高,压缩比越高,但速度越慢,
-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 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 通过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 不设
-sse : stop archive creating, if it can't open some input file 不设
-ssw : compress shared files 不设
-stl : set archive timestamp from the most recently modified file 设置档案的时间戳
-stm{HexMask} : set CPU thread affinity mask (hexadecimal number) 设置指定CPU线程所运行的核心,不般不设
-stx{Type} : exclude archive type 排除档案类型
-t{Type} : Set type of archive 设置档案的类型,常用有,7z, zip, gz等
-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 不用提示确定往下走
命令行的参数挺多,下面给出一些使用的样例:
1. 快速压缩,用于压缩率要求不高,但速度要求高的:
7z a -t7z archive_name.7z directory_to_compress -m0=LZ4 -mmt6 -mx3 -aoa
a添加模式;-t7z 压缩档案格式 7z;archive_name压缩文件名;directory_to_compress准备用于压缩的文件目录;-m0=LZ4用LZ4压缩算法;-mmt6用6个CPU线程处理;-mx3第三层的压缩率;-aoa压缩文件覆盖
2. 高压缩率压缩,用于对压缩率和压缩速度有一定要求的:
7z a -t7z archive_name.7z directory_to_compress -m0=FLZMA2 -mmt6 -mx0 -aoa
a添加模式;-t7z 压缩档案格式 7z;archive_name压缩文件名;directory_to_compress准备用于压缩的文件目录;-m0=FLZMA2用Fast LZMA2压缩算法;-mmt6用6个CPU线程处理;-mx0第0层的压缩率;-aoa压缩文件覆盖
3. 解压缩方法
7z x archive_name.7z -odirectory_to_uncompress -aoa
a解压缩模式;archive_name解压缩的文件名;-odirectory_to_uncompress解压缩后的文件目录,-o后面不能有空格;-aoa压缩文件覆盖
其它还有一些详细的用法,可以在这个网站上找到,基本上面三个加解压的命令,可以解决大部分的加解压的方法。
https://www.dotnetperls.com/7-zip-examples