【问题标题】:Wait for cmd command to end before continuing等待 cmd 命令结束后再继续
【发布时间】:2015-03-07 05:02:40
【问题描述】:

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

    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 进程结束,它将读取一个空文本文件。我想到了:

  • 不使用文本文件

    • 由于我有其他限制,这不起作用,它确实需要放入文本文件中
  • 等待几秒钟

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

    • 用户可能出于某种原因正在运行另一个命令提示符

【问题讨论】:

  • 看看Process 类。我相信你会在那里找到对你有用的东西。
  • 另外,研究控制台重定向。

标签: c# cmd


【解决方案1】:

System.Diagnostics.Process 类有一个方法,WaitForExit。据我了解您的问题,这应该可以满足您的需求。

你应该能够做到,

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

如有必要,您还可以通过 int 进行超时。

当然,这假设您正在运行的应用程序将在完成后退出。如果不是这种情况(重新考虑!),您将不得不做其他事情,例如投票。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2019-11-01
    • 2021-05-06
    • 2021-05-21
    • 1970-01-01
    相关资源
    最近更新 更多