如何从我的命令行捕获标准输出?
问题描述:
我尝试运行在命令行命令的Process.Start(),并试图让输出到字符串或一些有用的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();
答
你的过程将自身永远不会退出,因为你传递的/K
标志cmd.exe
将保持窗口打开(因此处理活着),它运行的命令后。
/K执行字符串指定的命令,但仍然
我认为你在这里寻找的是使用/C
运行你的命令后,将关闭命令窗口。
/C执行字符串指定的命令,然后终止
+0
这是事实,它帮助和工作。如果你有一个命令不能在cmd.exe中自行终止,就像运行这个进程一样:cmd.exe sqlplus bla bla bla? sqlplus本身不会终止,所以整个过程仍然会卡住... – MottiNissim 2012-03-02 09:32:40
[运行从ASPX页命令行,和返回输出到页]的可能重复(http://stackoverflow.com/问题/ 247668 /运行的命令行-从-AN-ASPX页和 - 返回输出到页)的 – Shai 2012-03-01 14:24:57
可能重复的[重定向有效地.NET标准输出(http://stackoverflow.com/问题/ 164736/redirect-standard-output-effective-in-net) – 2012-03-01 14:35:39
好吧,谢谢你的快速回复。它没有工作对我来说...还是被卡住,什么都不做,如果是在一个循环中 – MottiNissim 2012-03-01 14:39:42