16

尝试提取 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

4 回答 4

44

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

您需要改用WinRar.exe它还支持其他存档格式:

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

例子:

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

GUI 版本的语法、命令和开关在WinRARWinRAR.exe帮助中列出和描述。在菜单项帮助主题上单击菜单帮助,在帮助选项卡上打开目录命令行模式并阅读该项下列出的帮助页面。

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

于 2013-10-12T18:16:21.873 回答
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 的。

于 2009-08-22T10:06:12.693 回答
1

您可以在应用程序中使用其中一个SevenZipSharp或库!DotNetZip

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

源代码和二进制文件都在链接中可用!

于 2012-05-15T09:03:36.833 回答
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

进一步阅读参考:

于 2012-10-01T11:37:00.460 回答