【问题标题】:Continue after a certain command in terminal finish在终端完成某个命令后继续
【发布时间】:2016-10-09 14:17:12
【问题描述】:

我需要问一个我在互联网上确实找不到的问题.. 我正在使用 Process 在我的 c# 应用程序中打开 cmd.. 我需要传递一些命令,但在每个命令之后我需要确保该命令已完成,因此我可以继续执行其他命令!... system.diagnostics 怎么可能...这是我尝试过的代码..

    var startInfo = new ProcessStartInfo
      {
          FileName = "cmd.exe",
          RedirectStandardInput = true,
          RedirectStandardOutput = true,
          UseShellExecute = false,
          CreateNoWindow = false,
          WorkingDirectory = @"E:/Visual Studio 2013/" + project_Name + "/packages/NUnit.ConsoleRunner.3.4.1/tools"
      };

      var process = new Process { StartInfo = startInfo };

      process.Start();
      process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll");


      process.WaitForExit();    

wait for exit here 无限挂起,我无法通过这行代码。 有什么办法解决这个问题!?

【问题讨论】:

    标签: c# cmd process terminal


    【解决方案1】:

    尝试添加选项/c nunit3-console.exe E:/Debug/Report_Testing.dll。

    就像现在一样,它将运行cmd,并且在命令之后提示符将保持活动状态。 WaitForExit 正在等待 cmd 完成,但它永远不会完成。

    【讨论】:

    • 我听不懂你 Uno 对不起,我想知道命令什么时候结束......选项 /k 有什么作用?你还想让我把它添加到 writeline 行吗??
    • @OmarEl-elamy 您的进程启动 cmq,而不是 nunit 运行器,因此它附加到那个运行器以终止。如果你想在你的代码中关闭它,你应该将exit 发送到命令行,但我认为这不是很优雅。
    • 测试运行器作为 cmd 的 child 运行,因此即使运行器退出,父运行器也不会。
    • /c 未被识别为内部或外部命令?有什么我要下载的吗?
    • 那么在跑步者退出后我能做些什么来关闭终端呢?即命令完成后..这也可能是一个选项??
    【解决方案2】:

    我已经设法解决了:

    我已将此添加到我的 writeline 命令中,并将其更改为:

          process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll" + "&" +"exit");
    

    //然后使用等待退出 进程.WaitForExit();

    通过这个我确保命令被执行。

    【讨论】:

    • 这真的很讨厌,我会尝试执行一次性命令。
    • 一次性命令如何??我只想完成它然后退出??
    猜你喜欢
    • 2022-08-24
    • 2023-03-23
    • 2012-06-07
    • 2014-12-17
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    相关资源
    最近更新 更多