在关闭批处理文件之前,不会读取批处理文件的最后一行

时间:2019-05-27 09:47:08

标签: c# process

我有一个执行bat文件并在c#应用程序的控制台中输出bat文件输出的代码。但是当我运行该应用程序时,直到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

但不打印

Press any key to continue . . . 

直到cmd窗口关闭

因此,正如我所说,我希望在控制台中打印Press any key to continue . . .,而无需关闭cmd文件

0 个答案:

没有答案