Из моего. 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;