5

7zG.exe のコマンド ラインを使用して zip/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();
4

3 に答える 3

10

コメントセクションに記載されているように、使用することになっています7za.exe

このリンクは完全な例の行を提供します

コードは次のようになります。

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();
于 2013-10-09T20:41:03.363 に答える
5

gzipまた、圧縮アルゴリズムのみでbzip2あり、ファイル システム構造 (フォルダ、ファイルを含むフォルダなど) の圧縮には使用できません。

tar実際、 (特に unix ベースのシステムで) 有名なファイルtar.gztar.bz2アーカイブを取得するために、通常は (フォルダーをサポートする) 圧縮が先行します。

あなたの場合、-tzipまたはを使用-t7zipしてフォルダーを直接圧縮できます。

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

ちなみに、7zip のマニュアルに記載されているように、後者は GUI モジュールであり、前者は 7zip のコマンドライン スタンドアロン バージョン (つまり、他の dll に依存しない) であるため、7za.exe代わりに を使用する必要があります。7zG.exe

7z.exe は 7-Zip のコマンド ライン バージョンです。7z.exe は、7-Zip パッケージの 7z.dll を使用します。7z.dll は、7-Zip File Manager でも使用されます。

7za.exe (a = 単独) は、7-Zip のスタンドアロン バージョンです。7za.exe は、7z、lzma、cab、zip、gzip、bzip2、Z、および tar 形式のみをサポートします。7za.exe は外部モジュールを使用しません。

追加のパッケージで見つけることができます7za.exe。たとえば、バージョン 9.22 の場合は、7z922_extra.7z(リンク) というアーカイブで見つけることができます。

于 2013-10-09T20:49:41.593 に答える