【问题标题】:Executing WinZip Command in a C# Program在 C# 程序中执行 WinZip 命令
【发布时间】:2015-03-12 04:24:55
【问题描述】:

如何从MVC控制器Action中执行winzip命令?

命令:

C:\Program Files (x86)\WinZip>WZZIP.EXE -ys2048000 Location Location

【问题讨论】:

  • 请提供有关您要完成的任务的更多详细信息。有些库可以压缩和解压缩流,而无需执行 Web 应用程序外部的程序。这样做通常没有意义。
  • 我正在尝试将 zip 文件拆分到特定位置,然后将其放到其他位置。当我通过 cmd 尝试此命令时,它工作正常
  • 我无法使用任何第三方库或 dll。如果它是由 Microsoft 库提供的,请告诉我,否则我只需要运行此命令。
  • 如何拆分zip文件?为什么要从控制器操作中执行此操作?文件是否正在上传?工作流程是什么?来源是什么?目的地是什么?
  • 此命令将分割文件。单击按钮即可拆分 zip 文件。源是第一个位置,目标是命令中的第二个位置。这是硬编码的

标签: c# .net asp.net-mvc zip winzip


【解决方案1】:

你所问的,直接可以通过System.Diagnostics.Process.Start(string, string) 方法实现。它看起来像这样:

System.Diagnostics.Process.Start(
    @"C:\Program Files (x86)\WinZip\WZZIP.EXE", 
    "-ys2048000 Location Location");

我已经走上了这条路,对于简单的事情来说它可能已经足够好了。我经常发现通常有更酷、更有用的事情可以直接与 zip 文件交互。在这种情况下,DotNetZipSharpZip 之类的东西可能是不错的选择。我以前用过 DotNetZip,它非常健壮且高性能。

这是来自 DotNetZip 主页的一个简单示例:

这里有一些创建 zip 文件的 C# 代码。

using (ZipFile zip = new ZipFile())
{
    // add this map file into the "images" directory in the zip archive
    zip.AddFile("c:\\images\\personal\\7440-N49th.png", "images");
    // add the report into a different directory in the archive
    zip.AddFile("c:\\Reports\\2008-Regional-Sales-Report.pdf", "files");
    zip.AddFile("ReadMe.txt");
    zip.Save("MyZipFile.zip");
}

【讨论】:

  • @SahilGupta 我不确定你的意思,只有许可版本。 DotNetZip 是 Microsoft 公共许可证 (Ms-PL)。
【解决方案2】:

我会添加以下包并使用它,而不是尝试连接到 exe 文件(您很可能没有这样做的权限):

https://www.nuget.org/packages/DotNetZip/

【讨论】:

    猜你喜欢
    • 2011-01-16
    • 1970-01-01
    • 2012-02-25
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2013-03-12
    • 2014-03-06
    相关资源
    最近更新 更多