2012-03-01 125 views
3

我嘗試運行在命令行命令的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(); 
+0

[運行從ASPX頁命令行,和返回輸出到頁]的可能重複(http://stackoverflow.com/問題/ 247668 /運行的命令行-從-AN-ASPX頁和 - 返回輸出到頁)的 – Shai 2012-03-01 14:24:57

+0

可能重複的[重定向有效地.NET標準輸出(http://stackoverflow.com/問題/ 164736/redirect-standard-output-effective-in-net) – 2012-03-01 14:35:39

+0

好吧,謝謝你的快速回復。它沒有工作對我來說...還是被卡住,什麼都不做,如果是在一個循環中 – MottiNissim 2012-03-01 14:39:42

回答

3

你的過程將自身永遠不會退出,因爲你傳遞的/K標誌cmd.exe將保持窗口打開(因此處理活着),它運行的命令後。

/K執行字符串指定的命令,但仍然

我認爲你在這裏尋找的是使用/C運行你的命令後,將關閉命令窗口。

/C執行字符串指定的命令,然後終止

+0

這是事實,它幫助和工作。如果你有一個命令不能在cmd.exe中自行終止,就像運行這個進程一樣:cmd.exe sqlplus bla bla bla? sqlplus本身不會終止,所以整個過程仍然會卡住... – MottiNissim 2012-03-02 09:32:40