技术经验分享:7z命令行压缩解压详解

简介: 技术经验分享:7z命令行压缩解压详解

1) 简介


7z,全称7-Zip, 是一款开源软件。是目前公认的压缩比例最大的压缩解压软件。


主页:


中文主页:


命令行版本下载:


Windows去官网下载安装包安装


linux使用命令安装:sudo apt install p7zip-full


注:


p7zip、p7zip-full和p7zip-rar三个版本的区别:


p7zip和p7zip-full之间的区别在于p7zip是较轻的版本,仅支持.7z,而完整版本支持更多7z压缩算法(用于音频文件等)。


p7zip-rar软件包提供对7z的RAR文件的支持,在大多数情况下,安装p7zip-full应该足够了。


7z命令行的使用格式: 7z 【...】 【...】


这里有两个参数是必须的,command 和base_archive_name,对应操作和生成的压缩文件(或解压文件)的路径


主要特征:


# 全新的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 文件。


//代码参考:https://weibo.com/u/7930394832

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【】 其中为可以为r【- | 0】(具体的-r选项见后面-r),可以为@{listfile} | !{wildcard}。


7z a -tzip src.zip .txt -ir!DIR1\.cpp :从当前目录中添加 .txt 文件,和 DIR1 目录及其子目录中的 .cpp 文件到 src.zip 压缩档案。


-x 指定某一文件或某一类文件从操作中排除。此选项可同时排除多个类型。


x【】 其中为可以为r【- | 0】(具体的-r选项见后面-r),可以为@{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【】 其中为可以为r【- | 0】(具体的-r选项见后面-r),可以为@{listfile} | !{wildcard}。


7z t -an -air!.7z : 在当前目录及子目录下测试 .7z 压缩档案。


-ax 指定必须从操作中排除的压缩档案。此选项可同时排除多个类型。


ax【】 其中为可以为r【- | 0】(具体的-r选项见后面-r),可以为@{listfile} | !{wildcard}。


7z t -an -ai!.7z -ax!a.7z :测试除 a.7z 之外的 .7z 压缩档案。


更多的不常用的选项,可以查看帮助。


例如:-m设置压缩算法;


-scs 设置要压缩的文件的列表文件的字符集;


-seml通过电子邮件发送压缩档;


-sfx创建自释放档;


-si从标准输入读入数据,


-so从输出到标准输 出;


-slp设置大内存模式;


-slt显示技术信息;


-ssc设置区分大小写;


-ssw压缩正在写入的文件;


-u更新选项。


a test.zip ./test/ -mx0


功能:把test文件夹中所有文件以存储压缩的模式压缩成zip格式的文件,压缩文件为test.zip


参数说明:


a为添加选项


-tZip为压缩格式(-t7z...)


压缩率具体参数如下:


-mx0 仅存储不压缩-----------------速度最快,无压缩,zip大小等同原始文件夹


-mx1 极速压缩


-mx3 快速压缩


-mx5 标准压缩


-mx7 最大压缩


-mx9 极限压缩


必选参数:最常用的命令有a(压缩)、x(解压),其它的命令诸如删除,解压出来不保留目录结构这种,一般情况下都用不到。


可选参数:最常用的就是-t{Type}


Type默认值为7z,还有其它的如:


Type Format Example filename


-t7z 7Z archive.7z(默认)


-tgzip GZIP archive.gzip,archive.gz


-tzip ZIP archive.zip(兼容)


-tbzip2 BZIP2 archive.bzip2


-ttar TAR tarball.tar(Unix/Linux)


-tiso ISO image.iso(可能不支持)


-tudf UDF disk.udf


常用的就是-t{Type}以及-r、-o、-y


例如


7z.exe e -tgzip .gz


7z.exe e E:\Report\Process\Decote\.zip -o E:\Report\Process\Decote\


解压命令:7z x -tzip -y xx-13.zip (解压到当前目录,如需改变输出目录,需要附加使用-o)


压缩命令:7z a -tzip -r xx.zip a* b*


将目录a、目录b,压缩成一个xx.zip


更多参数的详情,可以参考这里:


在Windows的64位操作系统下,除需要7z.exe外,还需要7z.dll,我将他们打包为一个zip文件,否则你执行命令的时候可能会遇到上面的错误。

相关文章
|
7月前
|
域名解析 运维 网络协议
Linux命令行全景指南:从入门到实践,掌握命令行的力量
Linux命令行全景指南:从入门到实践,掌握命令行的力量
183 0
|
安全 开发工具 git
CTF工具隐写分离神器Binwalk安装和详细使用方法
CTF工具隐写分离神器Binwalk安装和详细使用方法
1783 0
|
Java 开发工具 Android开发
猿创征文|工具百宝箱-代码编辑器-版本控制工具-终端神器-项目与事务跟踪工具-SFTP客户端
猿创征文|工具百宝箱-代码编辑器-版本控制工具-终端神器-项目与事务跟踪工具-SFTP客户端
111 0
|
Linux 图形学 Android开发
5款好用的工具软件推荐给你
人类与99%的动物之间最大差别在于是否会运用工具,借助好的工具,能提升几倍的工作效率。
133 0
|
2月前
|
Windows Python
【10月更文挑战第2天】「Mac上学Python 2」入门篇2 - 开发环境命令行操作与文件管理
本篇将详细介绍Windows和Mac系统中的常用命令行操作与文件管理,帮助用户掌握如何通过终端或命令提示符进行文件管理和操作开发环境。内容涵盖路径切换、文件与文件夹的创建、删除、查看文件内容等基本操作,这些技能是后续Python开发的基础。
127 6
【10月更文挑战第2天】「Mac上学Python 2」入门篇2 - 开发环境命令行操作与文件管理
|
2月前
|
运维 Java Linux
【运维基础知识】掌握VI编辑器:提升你的Java开发效率
本文详细介绍了VI编辑器的常用命令,包括模式切换、文本编辑、搜索替换及退出操作,帮助Java开发者提高在Linux环境下的编码效率。掌握这些命令,将使你在开发过程中更加得心应手。
39 2
|
4月前
|
运维 安全 Linux
【超实用秘籍】Linux文件传输新高度:10个scp命令让你瞬间变身文件传输达人,从此告别繁琐操作!
【8月更文挑战第13天】文件传输是运维工作的核心部分,尤其对Linux用户来说,了解高效且安全的传输方法非常重要。本文介绍10种scp命令的应用技巧,涵盖基础文件传输、密钥认证、目录复制等场景,助你灵活运用这一基于SSH协议的安全工具。从简单的文件传输到复杂的多主机文件迁移,scp都能轻松应对。通过本文的学习,你将能更熟练地使用scp命令,提高工作效能。
284 6
|
7月前
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
93 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
6月前
|
存储 人工智能 算法
程序与技术分享:7z命令行压缩解压详解
程序与技术分享:7z命令行压缩解压详解
|
6月前
|
Unix Shell Linux
技术经验分享:Bash脚本命令使用详解
技术经验分享:Bash脚本命令使用详解
54 0
下一篇
DataWorks