如何从命令行中捕获标准输出?

时间:2012-03-01 14:22:12

标签: c#

我尝试在命令行中运行process.start()for command,并尝试将输出转换为字符串或一些有用的locaiton。输出将包含多行(如DIR命令)。我读了怎么做,但它对我不起作用。它运行但后来进入循环而不会停止。见下文。任何想法?

        ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe", 
                                                                  @" /k dir");
        Process myProcess = new Process();
        myProcess.StartInfo.RedirectStandardOutput = true;
        myProcess.StartInfo.UseShellExecute = false;
        myProcess.StartInfo.FileName = "cmd.exe";
        myProcess.StartInfo.Arguments = @" /k dir";
        myProcess.Start();         

        string ppp = myProcess.StandardOutput.ReadToEnd();
        myProcess.WaitForExit();

1 个答案:

答案 0 :(得分:3)

您的进程永远不会自行退出,因为您将/K标志传递给cmd.exe,这会在运行命令后保持窗口打开(因此进程处于活动状态)。

  

/ K执行string指定的命令,但仍然是

我认为你在这里寻找的是使用/C,它将在命令窗口运行命令后关闭命令窗口。

  

/ C执行string指定的命令,然后终止