Как извлечь 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, но мне не нравится это решение.)
Ответы
Ответ 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!
Оба источника и двоичные файлы доступны в ссылках!
Ответ 4
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
Ссылки на дополнительное чтение: