web-dev-qa-db-ja.com

WinRARコマンドラインでZipファイルを抽出する方法

Zipファイルを抽出しようとすると、エラーが発生します。

c:\ path\name.ZipはRARアーカイブではありません
抽出するファイルはありません

私のコードは:

p.StartInfo.FileName = @"C:\Program Files\WinRAR\rar.exe";
p.StartInfo.Arguments = string.Format("x -o- {2} \"{0}\" * \"{1}\"\\ ",
  szFN,
  outFolder,
  passWord == null ? "" : string.Format("-p\"{0}\"", passWord));

GUIバージョンはZipおよび7zファイルを抽出できます。

なぜこれが機能しないのですか? Zipおよび7zファイルを抽出するにはどうすればよいですか?

(注:7Zipのソースコードは異なります。2つをマージして、ファイルにrar拡張子が付いている場合にのみ上記を使用できると思います。しかし、その解決策は好きではありません。)

16
user34537

無料のunrar.exeおよびコンソールバージョンRar.exe ofWinRARは、RARアーカイブ形式のみをサポートします。 WinRARのプログラムファイルフォルダー内のテキストファイルRar.exeであるRar.txtのマニュアルの2番目の段落でそれが明確に説明されています。

代わりに、他のアーカイブ形式もサポートするWinRar.exeを使用する必要があります。

[path\winrar.exe] x [スイッチ] [Zipファイルへのパス] [抽出するファイル、for all files] [抽出するパスフォルダーに]

例:

"%ProgramFiles%\WinRAR\winrar.exe" x -ibck c:\file.Zip *.* c:\folder\

GUIバージョンWinRAR.exeの構文、コマンド、およびスイッチは、WinRARのヘルプにリストされ、説明されています。メニューをクリックヘルプメニュー項目ヘルプトピック、ヘルプタブで開く目次項目コマンドラインモードこのアイテムの下にリストされているヘルプページ。

たとえば、-ibckでのみサポートされ、WinRAR.exeではサポートされないスイッチRar.exeは、バックグラウンドで抽出を実行するためのもので、GUIバージョンのWinRARWindowsシステムトレイのアイコンに抽出を最小化します。

39
user2874632

rar.exeは確かにrarファイルのみを解凍できます。 WinRARとまったく同じではありません。

.NETでZipファイルを解凍するには、代わりに DotNetZip ライブラリを確認することをお勧めします。 CSharpZipLibとは異なり、商用ソフトウェアと互換性のあるライセンスを持っています。

RARもサポートする必要がある場合は、pinvokeでUnRAR.dllを使用できます。
http://www.rarlab.com/rar_add.htm
http://www.rarlab.com/rar/UnRARDLL.exe

または、この.NET unRARライブラリ:
http://www.chilkatsoft.com/rar-dotnet.asp

おそらく これ 7Zipの場合。

5
Mick

アプリケーションで SevenZipSharp または DotNetZip ライブラリを使用できます!

しかし、私は SevenZipSharp Libを使用します。これは、7-Zipでサポートされるすべてのアーカイブをサポートするためです。

ソースとバイナリの両方がリンクで利用可能です!

1
Writwick
for /f "tokens=*" %G in ('dir /on /b "D:\BACKUP_DATI\Excel\OPER*.Zip"') do "C:\Program Files\7-Zip\7z.exe" x  "..\%G" –aoa

さらに読むための参照:

0