如何使用WinRAR命令行提取ZIP文件?

时间:2009-08-22 09:56:55

标签: command-line rar unrar 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扩展时才使用上面的内容。但我不喜欢那个解决方案。)

4 个答案:

答案 0 :(得分:37)

WinRAR 的免费unrar.exe和控制台版Rar.exe仅支持RAR存档格式。 Rar.exe手册中的第二段清楚地描述了这一点,它是 WinRAR 的程序文件文件夹中的文本文件Rar.txt

您需要使用WinRar.exe代替其他归档格式:

  

[path \ winrar.exe] x [开关] [zip文件的路径] [要提取的文件,所有文件的] [要提取到的路径文件夹]

示例:

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

WinRAR 的帮助下列出并描述了GUI版本WinRAR.exe的语法,命令和开关。点击菜单项帮助主题上的菜单帮助,在帮助标签内容项目命令行模式上打开,然后阅读此项目下列出的帮助页面。

例如,仅由-ibck支持而不是WinRAR.exe支持的交换机Rar.exe用于在后台运行提取,这意味着 WinRAR 的GUI版本使得提取最小化为Windows系统托盘中的图标。

答案 1 :(得分:5)

rar.exe确实只能解压缩rar文件。它与WinRAR完全不同。

要在.NET中解压缩ZIP文件,您可能需要查看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可能是this one

答案 2 :(得分:1)

您可以在应用程序中使用SevenZipSharpDotNetZip库!

但我会选择SevenZipSharp Lib,因为它支持7-Zip支持的所有档案!

链接中提供了源和二进制文件!

答案 3 :(得分:0)

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

参考进一步阅读: