2

rar ファイルをある場所に抽出したいと考えています。問題は、rar ファイルに 4 つのフォルダーが含まれており、抽出に失敗することです。rar 内のすべてのファイルとフォルダーを場所フォルダーに抽出する必要があります。そして、存在しないファイルを抽出します。

私がこれまでに行ったこと:

Process winrar = new Process();
winrar.StartInfo.FileName = WinrarPath + @"\unrar.exe";
winrar.StartInfo.CreateNoWindow = true;
winrar.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
winrar.EnableRaisingEvents = true;
winrar.ErrorDataReceived += new 
DataReceivedEventHandler(winrar_ErrorDataReceived);
string src = downloadFilPath; // directory , not the file itself
string des = @"D:\"
winrar.StartInfo.Arguments = string.Format("x -o+ {0} {1}", src, des);
winrar.Start();
winrar.WaitForExit();

rar ファイルにフォルダが 1 つしか含まれていない場合は、うまく機能します。問題は、複数のフォルダーを含む rar ファイルの場合です。たぶん、私の問題の解決策を教えてくれるでしょう。

ありがとう、シュキ

4

1 に答える 1

4

自動上書きを指定するには、コマンド ライン スイッチ「-o+」を使用します。あなたの例では、引数行は次のようになります。

winrar.StartInfo.Arguments = string.Format("x -o+ \"{0}\" \"{1}\"", src, des);

ただし、このアプリケーションに必要な移植性と信頼性によっては、RAR やその他のアーカイブ処理にネイティブ .NET ライブラリを使用することを検討することをお勧めします。私が過去に成功裏に使用したそのようなライブラリの 1 つがSharpCompressです。

WinRAR ヘルプ ファイルから:

スイッチ -O[+|-] - 上書きモードを設定します


このスイッチは、アーカイブされたファイルの抽出と更新の両方で使用できます。以下のモードが利用可能です:

-o 上書き前に確認 (ファイル抽出のデフォルト)

-o+ すべてを上書きします (アーカイブされたファイルを更新するためのデフォルト)。

-o- 既存のファイルをスキップします。

于 2013-04-22T14:54:55.723 に答える