`
shirlly
  • 浏览: 1651736 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

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

    博客分类:
  • .NET
阅读更多
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差不多,但支持的格式几乎比后者多一倍。根据我的使用经验,其7z压缩格式的压缩速度及压缩比也领先于WinRAR(WinRAR亦可识别7z格式,故不必担心兼容性问题)。另一点重要的是,7z完全开源,包括压缩算法,而且还可以方便地使用它提供的库,在自己的程序中集成压缩功能。
这次继续研究常用工具的命令行用法。7zip的核心程序是7z.exe,命令行格式为:7z <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>]。
command 为操作指令,如下:
a 添加到压缩文件
b 基准测试,测试7z当前性能
d 从压缩文件中删除
e 从压缩文件中解压缩,但不包含目录结构(即所有各级文件都解压到一个目录里)
l 列出压缩文件的内容
t 测试压缩文件
u 更新文件到压缩文件
x 从压缩文件中解压缩,包含目录结构

可见,最常用的指令是a, l和x.
具体使用,举几个例子就明白了:

压缩a.txt和b.txt到c.7z:
7z a c.7z a.txt b.txt (命令a后的第一个为目标压缩文档名,然后是文件列表)

压缩a.txt和b.txt到D:\Program Files\c.7z:
7z a D:\”Program Files”\c.7z a.txt b.txt (目录名包含空格,用引号)

列出c.7z的内容:
7z l c.7z

解压缩c.7z到E:\Program Files:
7z x c.7z -oE:\”Program Files” (-o表示输出目录,其与目录路径之间没有空格)
这样解压包含下级目录名,但不会在E:\Program Files下新建一个c文件夹,如果需要,就把输出目录设为E:\Program Files\c,这样会自动创建文件夹c。

如果要生成 zip压缩包,可以直接将目标压缩包名设为c.zip,则它会自动使用zip算法压缩。


示例

ZipHelper.Unzip(new DirectoryInfo(@”C:\ZipFiles\”));//压缩文件存放的文件夹

public static class ZipHelper
    {
        public static void Unzip(DirectoryInfo DirectInfo)
        {
            if (DirectInfo.Exists)
            {
                foreach (FileInfo fileInfo in DirectInfo.GetFiles())
                {
                    Process process = new Process();
                    process.StartInfo.FileName = @”C:\7z.exe”;//网络上下的7z管理器安装程序,安装目录下即可找到这个可执行文件,考到你的站点目录下即可
                    process.StartInfo.Arguments = @” x ” + fileInfo.FullName + @” -oC:\Directory” + “\\” + fileInfo.Name.Substring(0, fileInfo.Name.LastIndexOf(‘.’));
                    process.Start();
                }
            }
        }
    }
分享到:
评论

相关推荐

    c#的调用7z解压dll

    标题 "c#的调用7z解压dll...总之,C#调用7z解压dll是利用7-Zip的强大功能并结合C#的编程能力来实现文件的高效解压缩。SharpZipLib库和P/Invoke技术为此提供了可行的途径,开发者可以根据自身需求选择合适的方法来实现。

    7z动态链接库dll文件及解压压缩示例.zip

    通过这个库,开发者可以在C#或任何.NET兼容的语言中轻松实现文件的压缩和解压操作。 解压文件是将已压缩的文件恢复到原始大小的过程。在使用7-Zip库时,我们需要调用相关的API,例如`ExtractArchive`方法,指定源...

    c#使用7z实现的压缩

    7-Zip SDK包含了一个名为7za.exe的可执行文件,可以用来执行压缩、解压等操作,以及相关的动态链接库(DLL),如7zLib.dll,这些都可以被C#程序直接引用。 二、PInvoke技术 由于7za.exe是命令行工具,C#可以通过...

    C#调用7z实现文件的压缩与解压

    1.关于7z ...实现对文件的解压缩方法是通过cmd命令,调用7z程式通过cmd命令实现对文件进行解压和压缩的操作,具体实现代码如下: 压缩代码 压缩的cmd命令:”7Z a -tzip ” + zipPath + ” ” + filePat

    .Net C#环境 使用7z实现的压缩解压/组件

    使用LZMA的压缩算法封装的便于使用的组件CompressHelper,提供_7zSimplifier类用于简化压缩/解压操作 其中LZMA 算法是 7z 格式的默认算法,具有压缩比高、字典大小可变等特点,而其SDK就是本组件制作所依赖的主要...

    SevenZipSharp压缩/解压(.7z .zip)

    【标题】:“SevenZipSharp压缩/解压(.7z .zip)”是指使用SevenZipSharp库进行7z和zip格式的文件压缩与解压缩操作。SevenZipSharp是C#语言封装的7-Zip API,它使得在.NET环境中调用7-Zip的功能变得简单易行。 ...

    c# 7z压缩方式,源码 Demo

    SevenZipSharp是一个开源的.NET库,它允许C#开发者调用7-Zip的API,无需直接操作7z.dll。通过这个库,我们可以轻松地在C#项目中集成7z的压缩和解压缩功能。 下面,我们将讨论如何使用SevenZipSharp实现文件或文件夹...

    利用7Zip实现在线压缩与解压

    `x`代表提取文件,`archive.7z`是待解压的文件。 在ASP.NET环境中,我们可以创建一个Web应用,利用System.Diagnostics.Process类来调用7-Zip的命令行工具。以下是一个简单的C#示例,展示了如何在ASP.NET中压缩文件...

    VS2019_C_Sharp_20210803_1353_VS通过命令行调用bat文件.7z

    这个压缩包文件“VS2019_C_Sharp_20210803_1353_VS通过命令行调用bat文件.7z”可能包含了相关的C#源代码示例、bat文件以及可能的说明文档,可以帮助学习者更深入地理解和实践这个功能。在解压后,可以通过查看源代码...

    7z.dll和SevenZipSharp.dll

    然后,我们调用`CompressDirectory`方法将指定目录下的所有文件和子目录压缩到一个7Z文件中。 此外,SevenZipSharp还支持自定义压缩参数,例如设置密码保护、创建分卷压缩文件、调整压缩线程数量等。同时,它提供了...

    7Z.7z 内部含有解压和压缩源代码

    标题 "7Z.7z 内部含有解压和压缩源代码" 提及的是一个包含7-Zip解压缩软件源代码的7z格式压缩文件。7-Zip是一款免费且开源的压缩工具,它支持多种压缩和解压缩格式,如7z、.Z、.tgz、.Zip等。在描述中提到,这个...

    BaiduMapTile_C#_瓦片_地图瓦片下载_baiduMap_

    这可以通过创建一个文件系统目录结构,与瓦片的Z-X-Y对应,来实现高效查找。 对于“BaiduMapTile”这个压缩包,它很可能包含了实现上述功能的源代码或已下载的地图瓦片。解压后,我们可以研究代码结构,理解其工作...

    VSCodeUserSetup-x64-1.50.1.exe.7z

    下载并解压"VSCodeUserSetup-x64-1.50.1.exe.7z"后,用户可以运行其中的"VSCodeUserSetup-x64-1.50.1.exe"文件进行安装。安装过程中,用户可以选择自定义安装路径,也可以选择是否创建桌面快捷方式。安装完成后,...

    C语言编程使用lzma SDK对7z文件简单解压缩

    本文将探讨如何使用C语言和lzma SDK来对7z文件进行解压缩操作。7z是一种高压缩率的文件格式,由7-Zip软件支持,其内部采用了多种压缩算法,包括lzma(Lempel-Ziv-Markov chain Algorithm)。 首先,了解lzma SDK是...

    C# WPF 解压缩7zip文件 带进度条

    C# WPF 解压缩7zip文件 带进度条 sevenzipsharp WPF PNG实现的图形进度条 .NET 3.5 vs2013打开 来这里看介绍 http://www.cnblogs.com/xe2011/p/3761870.html

    C#VLC播放器加类库.rar

    而`vlc.net.7z`则是VLC.DotNet库,它是C#与VLC交互的桥梁,允许开发者在C#应用中调用VLC的功能。 安装VLC播放器库: 1. 首先,解压`vlc-3.0.0-win32.7z`,将解压后的文件夹中的`lib`目录复制到C#项目的`Debug`...

    C#调用多媒体定时器

    在提供的压缩文件`MmTimerNet.7z`和`MmTimerTest.7z`中,应该包含了封装好的C++/CLR库和示例程序,解压后可以查看和学习具体的实现细节。通过研究这些示例,你将更好地理解如何在实际项目中应用多媒体定时器。

    支持7z的共通类

    【支持7z的共通类】是一个用于处理7z、zip和rar等压缩格式的类库,它提供了方便且高效的方式来实现文件的压缩与解压缩功能。这个类库的使用非常简单,使得开发者无需深入了解底层的压缩算法,就能在应用程序中轻松...

    getloginuser.7z

    在使用`getloginuser.exe`之前,确保你的系统已经解压了`getloginuser.7z`文件。7-Zip是一个流行的开源压缩软件,支持多种压缩格式,包括7z。解压后,你可以找到`getloginuser.exe`,将其放在系统的PATH环境变量所...

    压缩-解压文件ZIP程序

    程序通过在VS2005环境下,调用ICSharpCode.SharpZipLib组件,使用C#语言开发完成。 主要实现: 1、可无限配置压缩及解压缩任务,系统根据配置间隔时间循环读取任务; 2、压缩和解压过程中,可通过过滤条件分别压缩和...

Global site tag (gtag.js) - Google Analytics