由于7z.exe所在路径,以及解压目录中可能包含中文特殊字符,导致解压失败,所以最好将各部分路径使用双引号包含起来。
如:CString str;
str.Format(L""%s\7z.exe" x "%s" -o"%s"", strAppPath, strZipPath, strDestDirPath);
1、.rar 有开源库unrar,可以直接在代码中解压。
2、.zip 有开元库zlib,可以直接在代码中解压
3、其他格式如tar、7z等,建议使用7zip命令行形式。
网上下载7zip安装文件,然后使用7z.exe和7z.dll即可。速度非常快
命令参数如下:
现在大家都用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 Filesc.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 Filesc (-o表示输出目录,其与目录路径之间没有空格)
如果文件夹 E:Program Filesc 不存在,会自动创建。
如果要生成zip压缩包,可以直接将目标压缩包名设为c.zip,则它会自动使用zip算法压缩。
这次继续研究常用工具的命令行用 法。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 Filesc.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 Filesc (-o表示输出目录,其与目录路径之间没有空格)
如果文件夹 E:Program Filesc 不存在,会自动创建。
如果要生成zip压缩包,可以直接将目标压缩包名设为c.zip,则它会自动使用zip算法压缩。