很明顯,我可以使用cmd控制檯執行某些操作使用Process.Start();
是否有任何cmd回調?
有什麼方法可以獲得該進程的輸出嗎?例如,我可以像...
Process.Start("sample.bat");
...在我的C#WinForms應用程序和sample.bat將包含類似:
echo sample loaded
第一個問題:有沒有什麼辦法蝙蝠執行後檢索那個sample loaded
? 第二個問題:有沒有辦法在沒有彈出控制檯窗口的情況下使用它?
很明顯,我可以使用cmd控制檯執行某些操作使用Process.Start();
是否有任何cmd回調?
有什麼方法可以獲得該進程的輸出嗎?例如,我可以像...
Process.Start("sample.bat");
...在我的C#WinForms應用程序和sample.bat將包含類似:
echo sample loaded
第一個問題:有沒有什麼辦法蝙蝠執行後檢索那個sample loaded
? 第二個問題:有沒有辦法在沒有彈出控制檯窗口的情況下使用它?
還有的完全是一個例子,如何在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();
是的,你可以使用
Process.Start(ProcessStartInfo)
有幾個方法可以掛接到I/O包括ProcessStartInfo.RedirectStandardOutput
可用。您可以使用這些重載讀取批處理文件的輸出。您也可以掛鉤Exited
事件以瞭解何時執行完成。
使用CreateNoWindow
沒有窗口。
套裝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();
}
見http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput.aspx – Jon
並請參閱http:/ /stackoverflow.com/questions/7459397/how-to-easily-run-shell-commands-using-c – Cameron
只問每個帖子中的一個問題 –