写点什么

7Z 命令行

  • 2022 年 5 月 05 日
  • 本文字数:4783 字

    阅读完需:约 16 分钟

7z <command> \[<switch>...\] <base\_archive\_name> \[<arguments>...\]\* g8 T1 {- l2 e) P% T' V; A

<参数变量> ::= <选项> | <通配符> | <文件名> | <文件列表>

<选项>::= <选项标记><选项字符>\[<选项>\]

<选项标记> ::= '/' | '-'?

<文件列表> ::= @{文件名}( @4 \_; F?? r6 j. t+ a5 @

<arguments> ::= <switch> | <wildcard> | <filename> | <list\_file>

<switch>::= <switch\_symbol><switch\_characters>\[<option>\]

<switch\_symbol> ::= '/' | '-'?

<list\_file> ::= @{filename}

在方括号内的表达式(“\[” 和 “\]”之间的字符)是可选的。' ?2 k0 k/ m\* f. Q$ c4 h

在书名号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(而且要去掉括号)。

表达式

expression1 | expression2 | ... | expressionN\* R- s: |- P/ n& m9 C

命令行 及 选项 使用大写或小写字母都可以。

首个命令行必须是无选项的参数变量。

选项及其它文件名的输入顺序可以打乱。

带有空格的通配符或文件名必须加上引号:

"Dir\\Program files\\\*"\+ r+ u2 k?? b' Z& U. n

Dir\\"Program files"\\\*. M?? R?? V3 S/ s

通配符是一个键盘字符,例如星号(\*)或问号(?),当执行添加文件、释放文件、选定文件、删除文件等操作时,您可以使用它来代表一个或多个字符。当您不知道真正字符或者不想键入完整名称时,常常使用通配符代替一个或多个字符。

7-Zip 支持和?Windows?相类似的通配符:

“\*”可以使用星号代替零个或多个字符。?

“?”可以用问号代替名称中的单个字符。?

7-Zip 使用的并不是系统处理通配符的默认方法,因而 7-Zip 不支持其它通配符规则,在系统中 \*.\* 相当于所有文件。而 7-Zip 会将其视为任何扩展名的全部文件。所以,要处理所有文件您必须使用 \* 通配符。

示例:

\*.txt 这样会查找(添加、选定……)所有扩展名是“.txt”的文件?/ z9 x0 }' d, B, s# z

?a\* 这样会查找(添加、选定……)所有第二个字母为“a”的文件?/ f+ ^8 N7 S% b. b' Q

\*1\* 这样会查找(添加、选定……)所有包含“1”的文件?3 W# Q" f?? C\* h?? E6 n

\*.\*.\* 这样会查找(添加、选定……)所有包含“.”的双扩展名文件?

如果在命令行中没有文件名,系统将会使用默认通配符“\*”。\* K. J# R7 u) w7 n3 A6 ?

档案文件中通配符及文件名的使用限制:

通配符及文件名不能包括系统盘符或网址。每个通配符及文件名路径将被视为从盘符到当前目录的完整路径/从压缩档案的根目录算起的完整路径。换句话说,路径的开始部分(在首个斜线(“\\”)之前的字符)必须是某个名称或通配符。?1 \[% e: w/ V/ g, l" t0 N

通配符及文件名不能以斜线(“\\”)结尾。?

通配符只可以在完整路径的最后一部分中出现。?' M) Q' ~9 v2 O; m2 I9 \_$ G2 D, U" b

示例:

Dir1\\\*.cpp 正确?

c:\\Dir1\\\*.cpp 错误:路径中不能包括盘符?

Dir1\\Dir2\\g?.txt 正确?; i7 Q+ P) e2 F8 g

Dir1\\D?r2\\file1.txt 错误:只有在以路径的最后一部分才能使用通配符?

文件列表: l?? Z$ }; P4 O

您可以使用文件列表来对要操作的文件进行批量操作。在文件中的文件名必须用空格或另起一行隔开。(如使用空格格开,每一个文件必须加引号)。

7-Zip 命令行支持多个文件列表同时操作。2 Y+ k2 G9 |2 g: p. x2 M' Z

举个例子,这里有一个文件列表“listfile.txt”包含下列内容:" I! Z) }. C7 k/ H4 g; u' @+ Q

"My programs\\\*.cpp"5 v; @\* F) U5 \]$ k3 H6 J! b\* N

Src\\\*.cpp

那么我们可以输入命令:

7z a -tzip archive.zip @listfile.txt

将“My programs”及“Src”目录中所有扩展名为“cpp”的文件添加到压缩档案“archive.zip”中。

命令行

命令行的命令不分大小写。

更多有关命令行的详细内容请参阅 语法。

命令要点参考

命令 作用说明?

a 添加?. M% Z1 A/ G8 y: S9 d\* c

d 删除?: j9 \_?? \_2 ~$ W, W2 m: U

e 释放?\- Y7 {! I?? \_( K$ y

l 列表?4 w& j5 K?? X4 }+ Y# A) d\* k: S

t 测试?. h: w& C4 ~- P\* o+ @

u 更新?

x 完整路径释放?

& \`- O( \]?? M. T' k?? x0 \`

命令行选项/ }1 o6 h9 v9 B2 V9 |9 q' R. y

语法?? V\* Y, \`+ p( K5 b

<选项>::= <选项\_符号><选项\_字符>\[<选项>\]

<选项\_符号> ::= '/' | '-'?

&ltswitch>::= <switch\_symbol><switch\_characters>\[<option>\]

<switch\_symbol> ::= '/' | '-'

在命令行中,一个完整的选项由指定的选项、连字符(-)或斜线(/)组成,而且选项的符号不能使用缩写。, q$ P! D- o" H?? b" w/ Y3 \_# D

选项名称不区分大小写。而一部分选项会包括参数变量,它们是需要区分大小写的。

选项可以使用在命令行中的任何位置。##

( [参考 greegree 的文章](()) **先给出一个压缩文件的例子:**

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 -- 递归到所有的子目录。

7z 命令**解压文件的例子:**解压 File.7z 文件到目录 Mydir。

7z x "d:\\File.7z" -y -aos -o"d:\\Mydir"

参数说明:

x:完整路径下解压文件

\-y:所有确认选项都默认为是(即不出现确认提示)

\-aos:跳过已存在的文件

\-o:设置输出目录

**关于内存的使用:**

一般来说,WindowsXP 至少使用 80~160MB 的内存,为了保证系统的运行正常,还要留够 32MB 的剩余物理内存。

所以如果是 512MB 的内存,那么 7z 压缩所使用的内存为(512-32-160)320MB,使用 bt4b(d\*9.5+34MB),所以 d=32MB。

如果是 256MB 的内存,那么 7z 压缩所使用的内存为(256-32-120)104MB,使用 bt4b(d\*9.5+34MB),所以 d=8MB。

由此可见,在 WindowsXP 的图形界面下要想得到更大的压缩比,或者扩大物理内存的容量,或者可以采用在 DOS 下运行 32 位程序的方法;否则无论你的虚拟内存或者系统的磁盘缓存设置得再大,只能看见硬盘灯狂闪得交换页面文件。

通常情况下,较大的字典文件能提供较高的压缩比。但是在压缩和解压缩的时候会比较慢而且需要较多的物理内存:压缩时所使用的物理内存约为字典文件的 10 倍,解压缩时所使用的物理内存约等于字典文件大小。

语法格式:(详细情况见 7-zip 帮助文件,看得头晕可以跳过,用到再学)?

7z <command> \[<switch>...\] <base\_archive\_name> \[<arguments>...\]?

7z.exe 的每个命令都有不同的参数<switch>,请看帮助文件?

<base\_archive\_name>为压缩包名称?

<arguments>为文件名称,支持通配符或文件列表?

a: 添加文件的压缩包,或者创建新的压缩包。?

d: 从压缩包中删除文件。?

e: 从压缩包中提取。?

t: 测试压缩包的是否出错。?

u: 更新压缩包中的文件。?

其中,7z 是至命令行压缩解压程序 7z.exe,<command>是 7z.exe 包含的命令,列举如下:?

a: Adds files to archive. 添加至压缩包?

a 命令可用参数:?

\-i (Include)?

\-m (Method)?

\-p (Set Password)?

\-r (Recurse)?

\-sfx (create SFX)?

\-si (use StdIn)?

\-so (use StdOut)?

\-ssw (Compress shared files)?

\-t (Type of archive)?

\-u (Update)?

\-v (Volumes)?

\-w (Working Dir)?

\-x (Exclude)?

b: Benchmark?

d: Deletes files from archive. 从压缩包中删除文件?

d 命令可用参数:?

\-i (Include)?

\-m (Method)?

\-p (Set Password)?

\-r (Recurse)?

\-u (Update)?

\-w (Working Dir)?

\-x (Exclude)?

e: Extract 解压文件至当前目录或指定目录?

e 命令可用参数:?

\-ai (Include archives)?

\-an (Disable parsing of archive\_name)?

\-ao (Overwrite mode)?

\-ax (Exclude archives)?

\-i (Include)?

\-o (Set Output Directory)?

\-p (Set Password)?

\-r (Recurse)?

\-so (use StdOut)?

\-x (Exclude)?

\-y (Assume Yes on all queries)?

l: Lists contents of archive.?

t: Test?

u: Update?

x: eXtract with full paths 用文件的完整路径解压至当前目录或指定目录?

x 命令可用参数:?

\-ai (Include archives)?

\-an (Disable parsing of archive\_name)?

\-ao (Overwrite mode)?

\-ax (Exclude archives)?

\-i (Include)?

\-o (Set Output Directory)?

\-p (Set Password)?

\-r (Recurse)?

\-so (use StdOut)?

\-x (Exclude)?

\-y (Assume Yes on all queries)?

\-m (Set compression Method) switch?

**《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】**

Specifies the compression method.

用 7-ZIP 实现批处理 命令行压缩和解压功能?

编辑一个.bat 文件;每行这样写,就可以连续压制多个目录了

7z a -mx9 -md64m -mfb=273 -slp -ssw -v1024m -mmt=2 -r

{路径及 7z 档名} {路径及要压缩的文件名及路径 可以空格填多个}

例子:建议以成对双引号来包压缩档名和路径名

7z a -mx9 -md64m -mfb=273 -slp -ssw -v1024m "game" "d:\\game\\\*.\*"

把 d:\\game\\ 以 ultra 模式 64m 字典 fb273 每分卷 1024m 模式压缩

\-mxN N=0~9 ;压缩模式选择

Level Method Dictionary FastBytes MatchFinder Filter Description?

0 Copy No compression.?

1 LZMA 64 KB 32 HC4 BCJ Fastest compressing?

3 LZMA 1 MB 32 HC4 BCJ Fast compressing?

5 LZMA 16 MB 32 BT4 BCJ Normal compressing?

7 LZMA 32 MB 64 BT4 BCJ Maximum compressing?

9 LZMA 64 MB 64 BT4 BCJ2 Ultra compressing -mdNm 填字典大小 比如填 26 和填 64m 一样的;看说明更大内存也可以填,比如 128m 字典

最大 1024m

The maximum value for dictionary size is 1 GB = 2^30 bytes. Default values for LZMA are 24 (16 MB) in normal mode, 25 (32 MB) in maximum mode (-mx=7) and 26 (64 MB) in ultra mode (-mx=9).?

\-mfb=N 填 fastbytes 大小,此数字增大会稍微加大压缩但减慢速度

\-slp (Set Large Pages mode);会加快压缩,但开始会卡下,This feature works only on Windows 2003 / XP x64

\-ssw 也压缩共享文件

\-v (Create Volumes) switch

Specifies volume sizes.

Syntax

\-v{Size}\[b | k | m | g\]

\-mmt=N 多核选项,比如双核填 2

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
7Z命令行_Java_爱好编程进阶_InfoQ写作社区