Подтвердить что ты не робот

Как извлечь 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));

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

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

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

4b9b3361

Ответ 1

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

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

[path\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.

Ответ 2

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 libary:
http://www.chilkatsoft.com/rar-dotnet.asp

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

Ответ 3

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

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

Оба источника и двоичные файлы доступны в ссылках!