7z 命令行使用

7z 命令行基本语法为

1
7z <command> [<switch>...] <base_archive_name> [<arguments>...]

通配符

*.txt: means all files with an extension of “.txt” ?a*: means all files with a second character of “a” *1*: means all names that contains character “1” *.*.*: means all names that contain two at least “.” characters

commands

l (List)

列出压缩文件中的所有内容

1
7z l archive.zip

a (Add)

1
2
3
4
5
6
7
8
9
7z a -tzip archive.zip subdir
# -tzip 表示压缩包格式为 zip
# -t{archive_type}, 若不指定, 则使用默认格式 7z
# 将 文件夹 subdir 及其子文件、子文件夹 添加到压缩文件 archive.zip

7z a -tzip Files.zip *.txt -r
# -r (Recurse), 表示递归, 包含子文件夹
# 将当前文件夹及子文件夹下面的所有 .txt 文件添加到压缩包 Files.zip 中
# 生成的压缩包包含目录结构, 但仅限于包含 目标类型文件的子文件夹

e (Extract)

1
2
3
4
5
7z e archive.zip
# extracts all files from archive archive.zip to the current directory.

7z e archive.zip -oc:\soft *.cpp -r
# extracts all *.cpp files from archive archive.zip to c:\soft folder.

x (eXtract with full paths) command

1
2
3
4
5
7z x archive.zip
# extracts all files from the archive archive.zip to the current directory.

7z x archive.zip -oc:\soft *.cpp -r
# 提取压缩包`archive.zip`中所有的 `.cpp` 文件到文件夹 c:\soft 中

命令 e 和 x 解压的区别

使用 x 参数解压, 会保留压缩包内部的文件夹结构, 解压结果和日常使用右键->解压缩至…, 结果相同

使用 e 参数提取文件, 则会将压缩包内部所有层级的文件/文件夹都提取到同一个文件夹中

Examples

将当前路径下的所有 zip 文件解压到当前路径下, 以压缩包名称命名的文件夹中

1
2
3
4
# 如果 7z.exe 路径没有加到环境变量中, 需要指定完整路径
&"C:\Program Files\7-Zip\7z.exe" x *.zip -o*
# 如果已经加入到环境变量中, 可以直接使用 7z 命令
7z x *.zip -o*

官方文档 - 7-Zip Documentation