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

18

尝试提取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 时使用上面的代码。但我不喜欢那个解决方案。)


尝试使用UnRAR.dll COM库。 - Dale
1
这是一个旧帖子,但我也在这里问同样的问题。您现在可以使用命令行中的winrar.exe,并且它将与zip文件一起工作。 - gwgeller
4个回答

48

WinRar.exe支持除RAR以外的其他压缩格式,而unrar.exe和控制台版本的Rar.exe只支持RAR格式。这在WinRAR的程序文件夹中的文本文件Rar.txt中的第二段中清楚地描述了。

因此,您需要使用支持其他压缩格式的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的GUI版本将提取操作最小化到Windows系统托盘的图标中。


1
这适用于.zip和.rar档案。这是一个答案。 - Mr. Blond

5

1

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

但我会选择SevenZipSharp库,因为它支持7-Zip支持的所有存档格式!

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


0

2
我想最终我会使用7z,但问题是关于使用winrar而不是7z。 - user34537

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接