等待cmd命令结束,然后继续

时间:2015-03-07 05:02:40

标签: c# cmd

我从命令窗口运行命令,如下所示:

    System.Diagnostics.Process process = new System.Diagnostics.Process();
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    startInfo.FileName = "cmd.exe";
    startInfo.Arguments = "/C " + command + "> " + userProfile + @"\cmdoutput.txt";
    process.StartInfo = startInfo;
    process.Start();

下一行代码读取文本文件并根据需要操作数据。但是,如果我不等待cmd进程结束,它将读取一个空文本文件。我想到了:

  • 不使用文本文件

    • 由于我有其他限制,这项工作无法完成,需要将其放入文本文件中
  • 等几秒钟

    • 我不知道命令需要多长时间,而且基于时间的解决方案一般都很糟糕。
  • 检查命令提示符进程是否正在运行

    • 用户可能因任何原因正在运行另一个命令提示符

1 个答案:

答案 0 :(得分:0)

System.Diagnostics.Process类有一个方法WaitForExit。正如我理解你的问题,那应该做你想要的。

你应该可以做到,

process.Start();
process.WaitForExit();

如果需要,您还可以传递int超时。

当然,这假设您运行的应用程序将在完成后退出。如果情况并非如此(重新考虑那个!),你将不得不做其他事情,比如民意调查。