. NET: Как запустить cmd-скрипт, знать, что он завершается, и держать окно консоли открытым - PullRequest
0 голосов
/ 07 мая 2020

Из моего. NET приложения Мне нужно запустить cmd-скрипт так же, как Visual Studio запускает консольные приложения:

  • запустить его в окне консоли
  • подождите, пока он закончил и получил код выхода
  • оставьте окно консоли открытым для просмотра вывода

Для запуска cmd я использую Process с ProcessStartInfo. Если я укажу параметр '/ C' для запуска скрипта - окно консоли будет закрыто после завершения скрипта. Если я использую '/ K' - окно консоли остается открытым, но код не возвращается из process.Start(), и мое приложение не узнает, что сценарий завершен.

Мое приложение должно запустить процесс развертывания и запускать один за другим несколько скриптов и консольных приложений. Я не могу изменять скрипты с помощью команд pause и if ERRORLEVEL. В идеале мне нужно, чтобы это было похоже на то, как VS запускает консольные приложения - запускайте их по одному в отдельной консоли windows и оставляйте windows открытым. Может быть, VS запускает консольные приложения со скрытым окном, но перенаправляет вывод на отдельно созданную консоль?

Я использую код, как показано ниже.

    Process process = new Process();
    var startInfo = new ProcessStartInfo();
    startInfo.FileName = "cmd.exe";
    startInfo.Arguments = "/K " + cmdCommand;
    process.StartInfo = startInfo;
    process.Start();
    var exitCode = process.ExitCode;
...