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拡張子が付いている場合にのみ上記を使用できると思います。しかし、その解決策は好きではありません。)
無料の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システムトレイのアイコンに抽出を最小化します。
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の場合。
アプリケーションで SevenZipSharp
または DotNetZip
ライブラリを使用できます!
しかし、私は SevenZipSharp
Libを使用します。これは、7-Zipでサポートされるすべてのアーカイブをサポートするためです。
ソースとバイナリの両方がリンクで利用可能です!
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
さらに読むための参照: