Я пытаюсь выяснить способ запуска bat-файла, используя процесс c #
файл starttest.bat, как показано ниже
@echo off
echo Started testing
path\to\my\app.exe [args]
echo Testing finished
Когда я запускаю это из командной строки, используя
starttest.bat
Я получаю следующий вывод
Началось тестирование
Всего тестовых случаев: 2 пройдено: 1 не выполнено: 1 не проверено: 0
Всего тестовых сценариев: 0 пройдено: 0 не выполнено: 0 не проверено: 0 выход
Тестирование завершено
Но когда я пытаюсь запустить этот bat-файл, используя процесс c # в ядре .net, я получаю следующее
Началось тестирование
Тестирование завершено
Вывод из myapp.exe не получен в стандартном событии вывода
class BatExec
{
static Process proc = new Process();
public static void Execute()
{
ProcessStartInfo procStartInfo = new ProcessStartInfo("starttest.bat");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
proc.EnableRaisingEvents = true;
proc.StartInfo = procStartInfo;
// Called when Std Out is written to by the process
proc.OutputDataReceived += PrintData;
// Called when Std Err is written to by the process
proc.ErrorDataReceived += PrintData;
proc.Start();
proc.BeginOutputReadLine();
}
private static void PrintData(object sendingProcess, DataReceivedEventArgs outLine)
{
Console.WriteLine(outLine.Data);
}
}
class Program
{
static void Main(string[] args)
{
BatExec.Execute();
Console.ReadLine();
}
}