日期:2014-05-17  浏览次数:21455 次

c#通过调用7z.exe实现解压文件
7-Zip 简介

7-Zip 是一款号称有着现今最高压缩比的压缩软件,它不仅支持独有的 7z 文件格式,而且还支持各种其它压缩文件格式,其中包括 ZIP, RAR, CAB, GZIP, BZIP2和 TAR 等等。此软件压缩的压缩比要比普通 ZIP 文件高 30-50% ,因此,它可以把 Zip 格式的文件再压缩 2-10% 。
7-Zip 主要特征
更新了算法来加大 7z 格式 的压缩比
支持格式:
压缩及解压缩:7z、ZIP、GZIP、BZIP2 和 TAR
仅解压缩:RAR、CAB、ISO、ARJ、LZH、CHM、WIM、Z、CPIO、RPM、DEB 和 NSIS
对于 ZIP 及 GZIP 格式,7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的压缩比
7z 格式支持创建自释放(SFX)压缩档案
集成 Windows 外壳扩展
强大的的文件管理
强大的命令行版本
支持 FAR Manager 插件
支持 69 种语言

7-Zip命令行

语法

7z <命令行> [<选项>...] <基本档案名称> [<参数变量>...]

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

<参数变量> ::= <选项> | <通配符> | <文件名> | <文件列表>
<选项>::= <选项标记><选项字符>[<选项>]
<选项标记> ::= ‘/’ | ‘-’
<文件列表> ::= @{文件名}

<arguments> ::= <switch> | <wildcard> | <filename> | <list_file>
<switch>::= <switch_symbol><switch_characters>[<option>]
<switch_symbol> ::= ‘/’ | ‘-’
<list_file> ::= @{filename}

在方括号内的表达式(“[” 和 “]”之间的字符)是可选的。

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

表达式

expression1 | expression2 | … | expressionN

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

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

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

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

    “Dir\Program files\*”
    Dir\”Program files”\*

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

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

    * “*”可以使用星号代替零个或多个字符。
    * “?”可以用问号代替名称中的单个字符。

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

示例:
*.txt 这样会查找(添加、选定……)所有扩展名是“.txt”的文件
?a* 这样会查找(添加、选定……)所有第二个字母为“a”的文件
*1* 这样会查找(添加、选定……)所有包含“1”的文件
*.*.* 这样会查找(添加、选定……)所有包含“.”的双扩展名文件

如果在命令行中没有文件名,系统将会使用默认通配符“*”。

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

    * 通配符及文件名不能包括系统盘符或网址。每个通配符及文件名路径将被视为从盘符到当前目录的完整路径/从压缩档案的根目录算起的完整路径。换句话说,路径的开始部分(在首个斜线(“\”)之前的字符)必须是某个名称或通配符。
    * 通配符及文件名不能以斜线(“\”)结尾。
    * 通配符只可以在完整路径的最后一部分中出现。

示例:
Dir1\*.cpp 正确
c:\Dir1\*.cpp 错误:路径中不能包括盘符
Dir1\Dir2\g?.txt 正确
Dir1\D?r2\file1.txt 错误:只有在以路径的最后一部分才能使用通配符
文件列表

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

7-Zip 命令行支持多个文件列表同时操作。

举个例子,这里有一个文件列表“listfile.txt”包含下列内容:

    “My programs\*.cpp”
    Src\*.cpp

那么我们可以输入命令:

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

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

命令行

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

更多有关命令行的详细内容请参阅 语法。
命令要点参考
命令 作用说明
a 添加
d 删除
e 释放
l 列表
t 测试
u 更新
x 完整路径释放

命令行选项
语法

<选项>::= <选项_符号><选项_字符>[<选项>]
<选项_符号> ::= ‘/’ | ‘-’

&ltswitch>::= <switch_symbol><switch_characters>[<option>]
<switch_symbol> ::= ‘/’ | ‘-’

在命令行中,一个完整的选项由指定的选项、连字符(-)或斜线(/)组成,而且选项的符号不能使用缩写。

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

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

有关命令行的详细使用说明请见 语法。
选项要点参考
选项 说明
– 阻止选项解析
-ai 附件档案文件名
-an 不解析档案名称
-ao 覆盖模式
-ax 排除档案文件名
-i 包括文件名
-m 设置压缩算法
-o 设置输出目录
-p 设置密码
-r 递归子目录
-sfx 创建自释放档案
-si 从 StdIn 读取数据
-so 从 StdOut 写入数据
-t 设置档案类型
-u 更新选项
-v 创建分卷
-w 设置工作目录
-x 文件名排除
-y 全是
现在大家都用WinRAR,不知道听说过7zip的朋友多不多。7zip是一个开源的压缩软件,非常小巧,提供的功能和WinRAR差不多,但支持的格式几乎比后