在Java中运行bat文件并等待

2024-05-15

您可能会认为从 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() http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String%5B%5D)。它给你一个Process http://java.sun.com/javase/6/docs/api/java/lang/Process.html反对你可以waitFor() http://java.sun.com/javase/6/docs/api/java/lang/Process.html#waitFor(), 像这样:

final Process process = Runtime.getRuntime().exec("blahblahblah");
final int exitVal = process.waitFor();
// if exitVal == 0, the command succeeded
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Java中运行bat文件并等待 的相关文章

随机推荐