7z 命令行参数详解与常用示例

7-Zip 的命令行版本 7z 能完成图形界面的全部操作,并且可以写进脚本。以下按“语法 → 命令 → 开关 → 示例 → 退出码”的顺序说明,示例可直接复制、改路径后使用。

稳定版 26.06 文档更新 2026-11-10 依据 7-zip.org

基本语法

7z <命令> [<开关>...] <压缩包名> [<文件或目录>...]

命令决定“做什么”,开关决定“怎么做”,压缩包名在前,待处理文件在后。开关可以放在命令后的任意位置,但路径含空格时必须加引号。

三条容易踩的规则

  • -o(输出目录)与 -p(密码)必须与值紧连,中间不能有空格:-o"D:\out"、-pMyPass。
  • 其它开关与值之间用等号:-mx=9、-mhe=on。
  • Windows 下反斜杠路径要加引号,避免被命令解释器当作转义符。

六个核心命令

日常 90% 的操作只用得到这六个,其余命令(b 基准测试、h 哈希、i 环境信息、rn 重命名)按需查阅官方帮助。

7z 常用命令
命令 作用 典型写法
a 添加文件到压缩包,压缩包不存在时创建 7z a backup.7z ./docs
x 解压并保留目录结构 7z x backup.7z -o./out
e 解压到同一层,丢弃目录结构 7z e backup.7z -o./flat
l 列出压缩包内容,不解压 7z l backup.7z
t 测试完整性,校验 CRC 7z t backup.7z
d 从压缩包中删除指定文件 7z d backup.7z old.log

x 与 e 的差别只在目录结构。批量处理散装文件时 e 更方便,但同名文件会被覆盖,需谨慎。

常用开关

按使用频率排序。完整列表可在安装目录执行 7z -h 查看,或参考官方文档。

7z 常用开关
开关 含义 说明
-o{dir}输出目录紧连写法,目录不存在会自动创建
-p{password}密码只写 -p 会提示交互输入,更安全
-y全部确认跳过覆盖等交互提示,适合脚本
-r递归子目录与通配符配合使用
-mx=0…9压缩级别0 仅打包,5 默认,9 最高
-m0=lzma2指定压缩方法7z 格式常用 lzma2、lzma、bzip2、ppmd
-mhe=on加密文件名仅 7z 格式支持,未给密码时看不到列表
-v{size}分卷大小如 -v100m、-v2g
-x!{pattern}排除文件如 -x!*.tmp
-i!{pattern}仅包含匹配文件与 -x 相反
-t{type}指定压缩包类型如 -tzip、-t7z
-sfx生成自解压包需要 7z.sfx 模块,输出 .exe
-aoa覆盖所有同名文件另有 -aos 跳过、-aou 自动改名
-w{dir}临时目录压缩大文件时可指向空间充足的磁盘
-bb3详细日志输出每个被处理的文件,便于排查

12 个可直接使用的示例

示例使用 Windows 路径写法,Linux 与 macOS 把路径换成 /home/user/... 即可,参数不变。

1. 把文件夹压成 7z

7z a -t7z "D:\backup\docs.7z" "D:\work\docs" -mx=5

2. 最高压缩率归档

7z a -t7z -mx=9 -m0=lzma2 "D:\backup\docs-ultra.7z" "D:\work\docs"

级别 9 更吃 CPU 与内存,压缩时间明显增加;日常归档用 5 更均衡。

3. 只压某类文件并递归子目录

7z a "D:\backup\sheets.7z" "D:\work\*.xlsx" -r

4. 排除临时文件与缓存目录

7z a "D:\backup\project.7z" "D:\work\project" -x!*.tmp -x!node_modules -x!.git

5. 解压到指定目录

7z x "D:\downloads\docs.7z" -o"D:\docs" -y

6. 只解压包内某一个文件

7z x "D:\downloads\docs.7z" "config\app.ini" -o"D:\temp"

包内路径用压缩包中的相对路径,先用 7z l 确认准确写法。

7. 查看内容与测试完整性

7z l "D:\downloads\docs.7z"
7z t "D:\downloads\docs.7z"

8. 加密并隐藏文件名

7z a -t7z -p -mhe=on "D:\backup\secret.7z" "D:\work\secret"

-p 后不写密码,7-Zip 会交互式提示输入,避免密码留在命令历史里。详见 7z 加密与密码。

9. 生成 100 MB 分卷

7z a -v100m "D:\backup\pack.7z" "D:\work\bigfolder"

输出为 pack.7z.001、pack.7z.002…,解压时只打开第一个。详见 分卷压缩与合并。

10. 生成自解压程序

7z a -sfx "D:\backup\setup.exe" "D:\work\portable"

需要 7-Zip 安装目录中的 7z.sfx 模块,否则会报错。自解压包体积比 7z 大约多出模块本身的大小。

11. 计算 SHA-256 校验值

7z h -scrcSHA256 "D:\downloads\7z2606-x64.exe"

用于与官方发布记录中的摘要比对。CRC32、SHA-1 把参数换成 -scrcCRC32、-scrcSHA1 即可。

12. 解压单个文件到标准输出

7z x -so "D:\downloads\docs.7z" "readme.txt" > "D:\temp\readme.txt"

-so 不写磁盘,适合只读取内容或做管道处理。

退出码与批处理判断

脚本里不要只看“有没有输出”,用退出码判断更可靠。

7z 退出码
退出码 含义 脚本中的处理建议
0成功,无错误继续
1有警告,部分文件未处理记录日志并继续,事后检查
2发生错误中止并告警
7命令行参数错误修正脚本
8内存不足降低 -mx 或字典大小
255用户中断清理残留文件

Windows 批处理用 if errorlevel 2 判断“大于等于 2”,注意顺序;PowerShell 用 $LASTEXITCODE;Bash 用 $?。

Windows、Linux、macOS 的差异

参数语法一致,差别主要在可执行文件名与可选功能。

Windows

可执行文件为 7z.exe,默认安装路径 C:\Program Files\7-Zip。支持自解压包、Windows Shell 集成与文件关联。

Linux

官方 tar.xz 包内为 7zz,需自行放到 PATH 目录。不含图形界面,也没有自解压模块。

macOS

同样为命令行版本,可执行文件为 7zz。首次运行可能被 Gatekeeper 拦截,需在“隐私与安全性”中允许。

常见问题

7z 和 7za、7zz 有什么区别?

三者都是 7-Zip 的命令行程序,但来源不同:Windows 安装包内是 7z.exe;7za 是旧版独立版可执行文件,格式支持较少;7zz 是官方 Linux 与 macOS 包内使用的可执行文件名。参数语法一致,具体支持范围以对应版本说明为准。

为什么 -o 和 -p 后面不能加空格?

7-Zip 把这两个开关设计为“开关+值”的紧连写法,-o 后直接跟目录,-p 后直接跟密码。写成 -o "D:\out" 会被解析成两个独立参数,导致输出到默认位置或直接报错。

怎么让 7z 只压缩某种类型的文件?

用通配符加递归参数,例如 7z a backup.7z "D:\project\*.docx" -r。需要排除某些文件时用 -x,例如 -x!*.tmp。通配符由 7-Zip 自行解析,建议给路径加引号以避开命令行自身的展开。

7z 的退出码怎么判断成功?

退出码 0 表示成功;1 表示有警告(例如部分文件被占用而跳过);2 表示发生错误;7 表示命令行参数错误;8 表示内存不足;255 表示用户中断。批处理中应以 0 或 1 作为可接受结果。

压缩时提示“文件被另一进程使用”怎么办?

说明文件正被其他程序打开。可以关闭占用程序,或加 -ssw 让 7-Zip 尝试压缩正在写入的文件(可能得到不一致的内容)。数据库、虚拟机磁盘这类文件不建议在运行中压缩。

Linux 上装了 7-Zip,为什么输入 7z 提示找不到命令?

官方 tar.xz 包解压后得到的可执行文件是 7zz,需要把它放到 PATH 包含的目录(例如 /usr/local/bin),或使用完整路径调用。部分发行版仓库里的 7z 来自 p7zip,属于另一个实现,参数虽相似但版本较旧。