2010-03-12 103 views
4

你會認爲,發動從Java一個bat文件將是一件容易的事,但沒有...我有一個bat文件,做了值的環從一個文本文件中讀取一些SQL命令。它或多或少是這樣的:運行bat文件,並等待

FOR /F %%x in (%CD%\listOfThings.txt) do sqlcmd -Slocalhost\MSSQL %1 %2 -d %3 -i %CD%\SQLScripts\\%%x 
exit 

不要擔心他們不重要的細節。我要的是簡單地從內部的Java運行這個批處理文件,並把它等到執行完畢。顯然這並不容易。我到目前爲止是這樣的:

Runtime.getRuntime().exec("cmd /K start SQLScriptsToRun.bat" 
        +" -U"+getUser() 
        +" -P"+getPass() 
        +" " + projectName); 
return true; 

問題是exec()方法立即返回。該bat文件運行了2-3分鐘。我嘗試刪除開始,但無濟於事。我嘗試了很多變化,但它讓我無處可尋。關於如何做這個簡單任務的任何想法?

回答

11

你不應該忽視的.exec()返回值。它給你一個Process對象,您可以waitFor(),像這樣:

final Process process = Runtime.getRuntime().exec("blahblahblah"); 
final int exitVal = process.waitFor(); 
// if exitVal == 0, the command succeeded 
6

你需要在過程exec調用返回使用waitFor

+0

感謝它wworked但mmyers 2秒打你舉了一個例子:P +1雖然 – 2010-03-12 16:35:12

+1

@Savvas:其實他的24秒打我,但也許這是因爲該示例的... :) :) – 2010-03-12 16:45:55

+0

我希望我可以給你2+則:P – 2010-03-12 19:51:38