последняя строка командного файла не читается, пока командный файл не будет закрыт - PullRequest
4 голосов
/ 27 мая 2019

У меня есть код, который выполняет файл bat и выводит вывод файла bat в консоль моего приложения на c #.Но когда я запускаю приложение, последний файл файла bat не читается, пока файл bat не будет закрыт

Я провел некоторое исследование, и было несколько разных способов вывести его на консоль c #, ноу всех них была одна и та же проблема

        private void button2_Click(object sender, EventArgs e)
        {
            if (Directory.GetFiles(string.Format(@"C:\Users\{0}\Downloads", Environment.UserName), "*", SearchOption.AllDirectories).Length <= 2)
            {
                Process p = new Process();

                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardOutput = true;
                //p.StartInfo.CreateNoWindow = true;
                p.StartInfo.FileName = string.Format(@"C:\Users\{0}\Downloads\test.bat", Environment.UserName);
                p.OutputDataReceived += CaptureOutput;
                p.Start();
                p.BeginOutputReadLine();

                //while (!p.StandardOutput.EndOfStream)
                //{
                //    string line = p.StandardOutput.ReadLine();
                //    Console.WriteLine(line);
                //    //Console.WriteLine("--kl--");
                //}
            }   
        }
        static void CaptureOutput(object sender, DataReceivedEventArgs e)
        {
            Console.WriteLine(e.Data);
        }

и содержимое файла test.bat:

@echo off
timeout 10
echo YouCanCloseNow
pause

, а консоль печатает

Waiting for 10 seconds, press a key to continue ... 9 8 7 6 5 4 3 2 1 0
YouCanCloseNow

, но не 't печатать

Press any key to continue . . . 

до тех пор, пока окно cmd не будет закрыто

Итак, как я уже сказал, я хочу, чтобы Press any key to continue . . . печатался в консоли без необходимости закрывать файл cmd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...