7z命令行来压缩文件夹

时间:2013-10-09 20:26:53

标签: c# 7zip

我正在尝试使用7zG.exe的命令行压缩/ 7z文件夹。我的代码适用于文件,但不适用于文件夹。有人可以用7z命令行来压缩文件夹,告诉我正确的方法吗?以下是仅适用于文件的示例代码。每当我尝试运行此代码时,7zip会显示一个消息框,上面写着“无效参数”

string sourceName = "Folder\Folder1";
string targetName = "Example.gz";

// 1
// Initialize process information.
//
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = "7zG.exe";

// 2
// Use 7-zip
// specify a=archive and -tgzip=gzip
// and then target file in quotes followed by source file in quotes
//
p.Arguments = "a -tgzip \"" + targetName + "\" \"" + sourceName + "\" -mx=9";
p.WindowStyle = ProcessWindowStyle.Hidden;

// 3.
// Start process and wait for it to exit
//
Process x = Process.Start(p);
x.WaitForExit();

3 个答案:

答案 0 :(得分:9)

如评论部分所述,您应该使用7za.exe

这个link为您提供了完整的示例行

您的代码如下所示:

string sourceName = "Folder\Folder1";
string targetName = "Example.gz";

ProcessStartInfo p = new ProcessStartInfo();
//first change
p.FileName = "7za.exe"; 
//second change
p.Arguments = "a -tzip \"" + targetName + "\" \"" + sourceName + "\" -mx=9"; 
p.WindowStyle = ProcessWindowStyle.Hidden;
Process x = Process.Start(p);
x.WaitForExit();

答案 1 :(得分:5)

gzip以及bzip2 压缩算法,不能用于压缩文件系统结构(例如文件夹,文件夹)与文件等)。

事实上,它们通常先于tar压缩(支持文件夹),以获得着名的(特别是在基于unix的系统中)tar.gztar.bz2档案。 / p>

在您的情况下,您可以使用-tzip-t7zip直接压缩文件夹:

p.Arguments = "a -t7z \"" + targetName + "\" \"" + sourceName + "\" -mx=9";

顺便说一句,您应该使用7za.exe而不是7zG.exe,因为后者是GUI模块,而前者是7zip的命令行独立版本(即它不依赖于任何其他dll),如7zip手册中所述:

  

7z.exe是7-Zip的命令行版本。 7z.exe使用7z.dll   7-Zip包。 7-Zip文件管理器也使用7z.dll。

     

7za.exe(a = alone)是7-Zip的独立版本。 7za.exe支持   只有7z,lzma,cab,zip,gzip,bzip2,Z和tar格式。 7za.exe   不使用外部模块。

您可以在额外的软件包中找到7za.exe,例如版本9.22,您可以在名为7z922_extra.7zlink)的存档中找到它。

答案 2 :(得分:0)

尝试使用此命令:

7za  -tzip <archive-name> <folder-name>