在尝试提取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扩展时才使用上面的内容。但我不喜欢那个解决方案。)
答案 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)
答案 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
参考进一步阅读: