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

Process 从cmd调用进程压缩文件时挂起,process,arguments,cmd,7zip,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 = fa

我做过这样的事情:

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程序会在调试此行时挂起。它可以进行适当的压缩归档,但程序不会转到下一行


如果有任何帮助,我将不胜感激。

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

您应该将命令更新为:

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

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

行和它的所有神奇的工作,我仍在调查中,当我找到我的解决方案和原因,我会确保编辑这个答案

编辑:

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

@"/C" + @"7za.exe a -tzip " + name + ".zip \"" + name + "\""; 
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;