2013-10-08 56 views
3

問題是WaitForExit不會等到批處理文件退出。它幾乎馬上就回來了。用C#啓動一個批處理文件,然後等待它退出繼續之前

我開始我的批處理文件如下:

  ProcessStartInfo startInfo = new ProcessStartInfo(batchFile); 
      startInfo.UseShellExecute = true; 
      startInfo.Arguments = arguments; 

      using (Process p = Process.Start(startInfo)) 
      { 
       p.WaitForExit(); 
      } 

我試圖與不UseShellExecute

+2

[This answer](http://stackoverflow.com/a/7101534/16623)可能會有所幫助。 –

+0

if WaitForExit()dosen't work try follow [this](http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited.aspx) – Tinwor

+0

這也沒有工作。它對於這個批處理文件必須是唯一的。批處理文件調用其他進程,但會一直等到它們全部退出後再返回。 – 010110110101

回答

0

看來你可以做它重定向StdOut並閱讀它,直到它關閉。

this similar question接過了這個想法。

適應您的片段,這將是:

ProcessStartInfo startInfo = new ProcessStartInfo(batchFile); 
//startInfo.UseShellExecute = true; 
startInfo.Arguments = arguments; 
startInfo.RedirectStandardOutput = true; 

Process p = Process.Start(startInfo); 
String output = proc.StandardOutput.ReadToEnd(); 
+0

它沒有爲我工作。它仍然立即返回。 – 010110110101

1

您可以嘗試使用 「/ C yourbatchfile」 運行CMD命令行參數來代替。

相關問題