您可能认为从Java启动bat文件将是一项简单的任务,但是...我有一个bat文件,它为从文本文件读取的值循环执行一些sql命令。或多或少是这样的:
FOR /F %%x in (%CD%\listOfThings.txt) do sqlcmd -Slocalhost\MSSQL %1 %2 -d %3 -i %CD%\SQLScripts\\%%x
exit不要担心那些不重要的细节。我想要的只是从Java内部运行这个bat文件,并让它等待,直到执行完成。显然,这并不容易。到目前为止,我得到的是:
Runtime.getRuntime().exec("cmd /K start SQLScriptsToRun.bat"
+" -U"+getUser()
+" -P"+getPass()
+" " + projectName);
return true;问题是exec()方法会立即返回。bat文件会运行2-3分钟。我试着去掉起始器,但没有用。我尝试了许多变体,但都无济于事。对如何完成这个简单的任务有什么想法吗?
发布于 2010-03-13 00:30:25
您不应该忽略.exec()的返回值。它为您提供了一个可以waitFor()的Process对象,如下所示:
final Process process = Runtime.getRuntime().exec("blahblahblah");
final int exitVal = process.waitFor();
// if exitVal == 0, the command succeeded发布于 2010-03-13 00:30:02
您需要在处理exec调用返回时使用waitFor。
https://stackoverflow.com/questions/2434125
复制相似问题