2013-06-03 68 views
-3

很明顯,我可以使用cmd控制檯執行某些操作使用Process.Start();是否有任何cmd回調?

有什麼方法可以獲得該進程的輸出嗎?例如,我可以像...

Process.Start("sample.bat"); 

...在我的C#WinForms應用程序和sample.bat將包含類似:

echo sample loaded 

第一個問題:有沒有什麼辦法蝙蝠執行後檢索那個sample loaded? 第二個問題:有沒有辦法在沒有彈出控制檯窗口的情況下使用它?

+0

見http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput.aspx – Jon

+0

並請參閱http:/ /stackoverflow.com/questions/7459397/how-to-easily-run-shell-commands-using-c – Cameron

+0

只問每個帖子中的一個問題 –

回答

5

還有的完全是一個例子,如何在Process文檔中做到這一點:

// Start the child process. 
Process p = new Process(); 
// Redirect the output stream of the child process. 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.FileName = "Write500Lines.exe"; 
p.Start(); 
// Do not wait for the child process to exit before 
// reading to the end of its redirected stream. 
// p.WaitForExit(); 
// Read the output stream first and then wait. 
string output = p.StandardOutput.ReadToEnd(); 
p.WaitForExit(); 
0

是的,你可以使用

Process.Start(ProcessStartInfo)

有幾個方法可以掛接到I/O包括ProcessStartInfo.RedirectStandardOutput可用。您可以使用這些重載讀取批處理文件的輸出。您也可以掛鉤Exited事件以瞭解何時執行完成。

使用CreateNoWindow沒有窗口。

0

套裝process.StartInfo.RedirectStandardOutput爲true,訂閱process.OutputDataReceived

using (var process = new Process()) 
{ 
    process.StartInfo = new ProcessStartInfo("exename"); 
    process.StartInfo.RedirectStandardOutput = true; 

    process.OutputDataReceived += (s, ev) => 
    { 
     string output = ev.Data; 
    }; 


    process.Start(); 
    process.BeginOutputReadLine(); 
    process.WaitForExit(); 
} 
相關問題