2009-08-22 14 views
12

Beim Versuch, Zip-Dateien ich den Fehler zu extrahieren:Wie entpacke ich ZIP-Dateien mit der WinRAR-Befehlszeile?

c:\path\name.zip is not RAR archive
No files to extract

Mein Code ist:

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)); 

Die GUI-Version zip und 7z-Dateien extrahieren können.

Warum funktioniert das nicht? Wie kann ich Zip- und 7z-Dateien extrahieren?

(Anmerkung: Ich habe verschiedene Quellcode für 7zip Ich denke, ich die beiden zusammenführen können und nur die oben verwenden, wenn die Datei eine rar Erweiterung hat aber ich weiß nicht, wie die Lösung...)

+0

versuchen Sie mit der UnRAR.dll COM-Bibliothek statt –

+0

Dies ist ein alter Thread, aber ich habe hier die gleiche Frage gestellt. Sie können nun winrar.exe von der Kommandozeile aus verwenden und es wird mit Zip-Dateien funktionieren. – gwgeller

Antwort

5

rar.exe kann tatsächlich nur rar-dateien auspacken. Es ist nicht das Gleiche wie WinRAR.

Zum Entpacken von ZIP-Dateien in .NET, möchten Sie vielleicht stattdessen die Bibliothek DotNetZip betrachten. Im Gegensatz zu CSharpZipLib verfügt es über eine Lizenz, die mit kommerzieller Software kompatibel ist.

Wenn Sie RAR müssen auch unterstützen, können Sie unrar.dll mit pinvoke verwenden:
http://www.rarlab.com/rar_add.htm
http://www.rarlab.com/rar/UnRARDLL.exe

Oder diese .NET UnRAR libary:
http://www.chilkatsoft.com/rar-dotnet.asp

Vielleicht this one für 7 Zip.

1

Sie können entweder SevenZipSharp oder DotNetZip Bibliothek in Ihrer Anwendung verwenden!

Aber ich werde gehen für SevenZipSharp Lib als Es unterstützt alle Archive von 7-Zip unterstützt!

Sowohl Source als auch Binary sind in den Links verfügbar!

-1
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 

Verweise auf weiterführende Literatur:

+0

Ich denke, ich benutze 7z, aber die Frage war für Winrar nicht 7z. –

32

Freie unrar.exe und Konsolenversion Rar.exe von WinRAR Unterstützung nur RAR-Archiv-Format. Das wird im zweiten Absatz im Handbuch für Rar.exe, das die Textdatei Rar.txt im Programmdateiordner von WinRAR ist, klar beschrieben.

Sie müssen WinRar.exe stattdessen verwenden, die unterstützt auch andere Archivformate:

[path\winrar.exe] x [switches] [path to zip file] [files to extract, . for all files] [path folder to extract to]

Beispiel:

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

Die Syntax, Befehle und Schalter für die GUI-Version WinRAR.exe werden aufgelistet und in Hilfe beschrieben WinRAR. Klicken Sie in Menü Hilfe auf Menüpunkt Hilfethemen, offen auf die Hilfe Registerkarte Inhalt das Element Kommandozeilenmodus und lesen Sie die Hilfeseiten unter diesem Posten aufgeführt.

Zum Beispiel -ibck der Schalter nur durch WinRAR.exe unterstützt, aber nicht von Rar.exe ist für die Extraktion im Hintergrund laufen, die GUI-Version von WinRAR bedeutet die Extraktion zu einem Symbol in Windows-Taskleiste minimiert macht.

+0

Dies funktioniert mit. ZIP und RAR-Archiven. Dies ist eine Antwort. – Edgar