【问题标题】:process zipping files hangs when called from cmd从 cmd 调用时,进程压缩文件挂起
【发布时间】:2012-08-07 12:32:09
【问题描述】:

我运行这样的东西:

string exec = @"/k" + @"7za.exe a -tzip " + name + ".zip \"" + name + "\"";
processStarter ps.run(exec);

startInfo 设置:

        startInfo.WorkingDirectory = workingDir;
        startInfo.FileName = exe;
        startInfo.UseShellExecute = false;
        startInfo.RedirectStandardOutput = true;

这会压缩一些带有命令行和 7zip 可执行文件的文件夹。启动形式的 winform 应用程序工作正常,压缩并转到下一行,但是当应用程序从带有一些参数的 cmd 形式启动时,程序在调试这一行时挂起。它会生成正确的 zip 存档,但程序不会转到下一行。

我将不胜感激。

【问题讨论】:

    标签: process arguments cmd 7zip


    【解决方案1】:

    /K 告诉 CMD 实例在执行完成后不要终止。您应该将其替换为 /C。这是来自 CMD 内置帮助 (CMD /?) 的指导

    /C      Carries out the command specified by string and then terminates
    /K      Carries out the command specified by string but remains
    

    您应该将您的命令更新为:

    @"/C" + @"7za.exe a -tzip " + name + ".zip \"" + name + "\""; 
    

    【讨论】:

      【解决方案2】:

      我在使用 zip 信息中的 zip.exe 时遇到了类似的问题,目前我正在删除

      startInfo.UseShellExecute = false;
      startInfo.RedirectStandardOutput = true;
      

      行,这一切都神奇地起作用,我仍在调查中,当我找到我的解决方案和原因时,我会确保编辑这个答案。

      编辑:

      亲爱的朋友,我的问题是标准输出缓冲区已满并且操作停止继续,我使用了zip.exe -q 选项,它在静默模式下工作并停止写入错误,这解决了问题并向我展示了我的原因问题,我想你也一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-18
        • 2015-05-23
        • 2014-01-01
        相关资源
        最近更新 更多