【问题标题】:how to catch a standard output from my command line?如何从我的命令行捕获标准输出?
【发布时间】:2012-03-01 23:19:43
【问题描述】:

我尝试在命令行中为命令运行 process.start(),并尝试将输出转换为字符串或一些有用的位置。输出将包含几行(如 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();

【问题讨论】:

标签: c#


【解决方案1】:

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

/K 执行字符串指定的命令但保留

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

/C 执行字符串指定的命令,然后终止

【讨论】:

  • 是的,它有帮助并且有效。如果您有一个不会在 cmd.exe 中自行终止的命令,例如运行进程: cmd.exe sqlplus bla bla bla 怎么办? sqlplus本身不会终止,所以整个过程还是会卡住……
猜你喜欢
  • 1970-01-01
  • 2010-09-09
  • 2011-06-28
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多