0

我运行这样的东西:

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

开始信息设置:

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

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

我将不胜感激任何帮助。

4

2 回答 2

0

/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 + "\""; 
于 2012-08-24T19:11:39.293 回答
0

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

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

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

编辑:

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

于 2016-12-20T10:45:29.407 回答