Пакетное выполнение файла с использованием процесса C # - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь выяснить способ запуска 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();
    }
}
...