Как извлечь ZIP файлы с помощью командной строки WinRAR? - PullRequest
14 голосов
/ 22 августа 2009

При попытке извлечь 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));

Версия с графическим интерфейсом может извлекать файлы zip и 7z.

Почему это не работает? Как извлечь файлы zip и 7z?

(ПРИМЕЧАНИЕ. У меня другой исходный код для 7zip. Думаю, я могу объединить их и использовать выше, только если у файла есть расширение rar. Но мне не нравится это решение.)

Ответы [ 4 ]

37 голосов
/ 12 октября 2013

Бесплатно unrar.exe и консольная версия Rar.exe из WinRAR поддерживает только формат архива RAR. Это четко описано во втором абзаце руководства для Rar.exe, который представляет собой текстовый файл Rar.txt в папке с программными файлами WinRAR .

Вместо этого вам нужно использовать WinRar.exe, который поддерживает также другие форматы архивов:

[путь \ winrar.exe] x [переключатели] [путь к zip-файлу] [файлы для извлечения, . для всех файлов] [путь к папке для извлечения]

Пример:

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

Синтаксис, команды и переключатели для версии GUI WinRAR.exe перечислены и описаны в справке по WinRAR . Щелкните в меню Справка в пункте меню Разделы справки , откройте вкладку справки Содержание Элемент Режим командной строки и прочитайте перечисленные страницы справки. под этим пунктом.

Например, переключатель -ibck, поддерживаемый только WinRAR.exe, но не Rar.exe, предназначен для запуска извлечения в фоновом режиме, что означает, что версия GUI WinRAR делает извлечение сведенным к значку в Windows системный трей.

5 голосов
/ 22 августа 2009

rar.exe действительно может распаковывать только rar-файлы. Это совсем не то же самое, что WinRAR.

Для распаковки ZIP-файлов в .NET вам может понадобиться библиотека DotNetZip . Имеет лицензию, совместимую с коммерческим программным обеспечением, в отличие от CSharpZipLib.

Если вам нужна поддержка RAR, вы можете использовать UnRAR.dll с pinvoke:
http://www.rarlab.com/rar_add.htm
http://www.rarlab.com/rar/UnRARDLL.exe

Или это библиотека .NET unRAR:
http://www.chilkatsoft.com/rar-dotnet.asp

Возможно этот для 7zip.

1 голос
/ 15 мая 2012

Вы можете использовать в своем приложении библиотеку SevenZipSharp или DotNetZip!

Но я пойду за SevenZipSharp Lib, поскольку он поддерживает все архивы, поддерживаемые 7-Zip!

Источник и Двоичный код доступны в ссылках!

0 голосов
/ 01 октября 2012
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

Ссылки на дальнейшее чтение:

...