2009-08-22 14 views
12

Durante il tentativo di estrarre i file zip ottengo l'errore:Come estrarre i file ZIP con la riga di comando di WinRAR?

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

Il mio codice è:

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

La versione GUI può estrarre zip e 7z.

Perché non funziona? Come posso estrarre i file zip e 7z?

(NOTA: non ho il codice sorgente diverso per 7zip Credo di poter unire i due e usare solo il sopra quando il file con estensione rar Ma non mi piace questa soluzione...)

+0

provare a utilizzare la libreria UnRAR.dll COM invece –

+0

Questo è un vecchio thread, ma sono arrivato qui a chiedere la stessa domanda. È ora possibile utilizzare winrar.exe dalla riga di comando e funzionerà con i file zip. – gwgeller

risposta

5

rar.exe può infatti solo decomprimere file rar. Non è affatto lo stesso di WinRAR.

Per decomprimere i file ZIP in .NET, si potrebbe invece guardare la libreria DotNetZip. Ha una licenza compatibile con il software commerciale, a differenza di CSharpZipLib.

Se è necessario supportare RAR così, è possibile utilizzare UnRAR.dll con PInvoke:
http://www.rarlab.com/rar_add.htm
http://www.rarlab.com/rar/UnRARDLL.exe

O questo .NET unRAR libary:
http://www.chilkatsoft.com/rar-dotnet.asp

Forse this one per 7zip.

1

È possibile utilizzare la libreria SevenZipSharp o DotNetZip nella propria applicazione!

Ma andrò per SevenZipSharp Lib come supporta tutti gli archivi supportati da 7-Zip!

Sia Source che Binary sono disponibili nei collegamenti!

-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 

riferimenti alle ulteriori approfondimenti:

+0

Penso di finire a usare 7z ma la domanda era per usare winrar not 7z. –

32

libero unrar.exe e Console versione Rar.exe di WinRAR supporto per il formato di archivio solo RAR. Ciò è chiaramente descritto nel secondo paragrafo nel manuale per Rar.exe che è il file di testo Rar.txt nella cartella dei file di programma di WinRAR.

è necessario utilizzare WinRar.exe invece che supporta anche altri formati di archivio:

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

Esempio:

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

I sintassi, comandi e interruttori per GUI versione WinRAR.exe sono elencati e descritti in aiuto di WinRAR. Fare clic nel menu di Aiuto sulla voce di menu argomenti, aperto su un aiuto scheda Contenuto modalità riga di comando elemento e leggere le pagine di aiuto elencati in questa voce.

Ad esempio l'interruttore -ibck supportati solo da WinRAR.exe ma non da Rar.exe è per eseguire l'estrazione in background che significa versione GUI di WinRAR rende l'estrazione minimizzato ad un'icona nella barra di sistema.

+0

Funziona con entrambi gli archivi .zip e .rar. Questa è una risposta. – Edgar