您可能认为从 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 分钟。我尝试删除开始但无济于事。我尝试了很多变化,但它让我无处可去。关于如何完成这项简单任务的任何想法?
最佳答案
你不应该忽略 .exec()
的返回值.它给你一个 Process
您可以 waitFor()
的对象,像这样:
final Process process = Runtime.getRuntime().exec("blahblahblah");
final int exitVal = process.waitFor();
// if exitVal == 0, the command succeeded
关于java - 在 Java 中运行 bat 文件并等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434125/