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;