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

16 command-line rar winrar unrar

在尝试提取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));
Run Code Online (Sandbox Code Playgroud)

GUI版本可以提取zip和7z文件.

为什么这不起作用?如何提取zip和7z文件?

(注意:我有7zip的不同源代码.我想我可以合并这两个,只有当文件有rar扩展时才使用上面的.但我不喜欢那个解决方案.)

小智 39

免费unrar.exe和控制台版本Rar.exeWinRAR仅支持RAR存档格式.这在手册的第二段中有详细描述,Rar.exe其中是WinRAR的Rar.txt程序文件文件夹中的文本文件.

您需要使用WinRar.exe而不支持其他存档格式:

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

例:

"%ProgramFiles%\WinRAR\winrar.exe" x -ibck c:\file.zip *.* c:\folder\
Run Code Online (Sandbox Code Playgroud)

WinRAR.exeWinRAR的帮助下列出并描述了GUI版本的语法,命令和开关.单击菜单中的帮助上的菜单项帮助主题,在帮助选项卡中打开目录命令行模式,并读取此项目下所列的帮助页面.

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


小智 5

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

要在.NET中解压缩ZIP文件,您可能需要查看DotNetZip库.与CSharpZipLib不同,它具有与商业软件兼容的许可证.

如果您还需要支持RAR,可以使用带有pinvoke的UnRAR.dll:
http : //www.rarlab.com/rar_add.htm
http://www.rarlab.com/rar/UnRARDLL.exe

或者这个.NET unRAR库:http:
//www.chilkatsoft.com/rar-dotnet.asp

也许这个为7zip.