从cmd调用时,进程压缩文件挂起

时间:2012-08-07 12:32:10

标签: process arguments cmd 7zip

我运行这样的事情:

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存档,但程序不会进入下一行。

我将不胜感激。

2 个答案:

答案 0 :(得分: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 + "\""; 

答案 1 :(得分:0)

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

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

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

编辑:

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