2011-07-04 50 views
0

當使用命令行程序時,通過c#類方法。命令行程序/ app + C#類方法

如何確定命令行程序是否已成功執行並且其執行的操作是否正常或失敗?

另外你如何獲得屏幕命令行輸出到C#類的方法?

+0

的[捕獲.NET中的控制檯輸出(C#)](可能重複http://stackoverflow.com/questions/186822/capturing-the -console -input-in-net-c) –

回答

3

您可以使用Process類執行命令行命令。

以下代碼將標準輸出捕獲到output,並將進程退出代碼分配到exitCode

using (Process p = new Process()) 
{ 
    p.StartInfo.FileName = exeName; 
    p.StartInfo.Arguments = args; 
    p.StartInfo.UseShellExecute = false; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.Start(); 
    string output = p.StandardOutput.ReadToEnd(); 
    p.WaitForExit(); 
    int exitCode = p.ExitCode; 
} 
+0

我也將編寫控制檯應用程序,如何在控制檯應用程序中設置exitCode?只需在完成執行後返回代碼吧? – 001

+0

只需從Main()返回錯誤級別代碼。請參閱http://msdn.microsoft.com/en-us/library/0fwzzxz2.aspx。 –

1

喜歡的東西:

Process mycommand = new Process(); 
mycommand.StartInfo.FileName = "myexe.exe"; 
mycommand.StartInfo.Arguments = "param1"; 
mycommand.StartInfo.UseShellExecute = false; 
mycommand.StartInfo.RedirectStandardOutput = true; 
mycommand.Start();  
Console.WriteLine(mycommand.StandardOutput.ReadToEnd()); 
mycommand.WaitForExit(); 

通常你確定羯羊退出代碼的EXE的狀態是0,但可以說是下降到EXE

0

的作家看看這個問題enter link description here

您可能需要的附加信息是process.ExitCode以查看它是否成功。當然,控制檯應用程序的主要方法必須在不成功時返回退出代碼,而許多代碼則不會。

0

爲此,您使用Process.Start方法。您可以控制如何處理與傳遞ProcessStartInfo運行:

var myProcess = Process.Start(new ProcessStartInfo { 
    FileName = "process.exe", 
    UseShellExecute = false, 
    RedirectStandardOutput = true, 
    CreateNoWindow = true 
}); 
if (!myProcess.WaitForExit(5000)) { // give it 5 seconds to exit 
    myProcess.Kill(); 
} 
if (myProcess.ExitCode != 0) { 
    // error! 
} 
var output = myProcess.StandardOutput.ReadToEnd(); // access output