Как извлечь ZIP-файлы с помощью командной строки WinRAR?

При попытке извлечь 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. Но мне это решение не нравится.)


person Community    schedule 22.08.2009    source источник
comment
попробуйте вместо этого использовать COM-библиотеку UnRAR.dll   -  person Dale    schedule 17.09.2009
comment
Это старая тема, но я зашел сюда и задал тот же вопрос. Теперь вы можете использовать winrar.exe из командной строки, и он будет работать с zip-файлами.   -  person gwgeller    schedule 08.09.2013


Ответы (4)


Бесплатная 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, предназначен для запуска извлечения в фоновом режиме, что означает, что версия WinRAR с графическим интерфейсом делает извлечение свернутым до значка на панели задач Windows.

person user2874632    schedule 12.10.2013
comment
Это работает как с архивами .zip, так и с .rar. Это ответ. - person Mr. Blond; 11.10.2015

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.

person Mick    schedule 22.08.2009

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

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

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

person Writwick    schedule 15.05.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

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

person Stefano Carfagna    schedule 01.10.2012
comment
Я думаю, что в конечном итоге я использую 7z, но вопрос был в том, чтобы использовать winrar, а не 7z. - person ; 02.10.2012