java - 在 Java 中运行 bat 文件并等待

标签 java batch-file exec

您可能认为从 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/

相关文章:

java - 在 Spring 3 中将 PropertyOverrideConfigurer 与带注释的类一起使用

shell - 将标准输入和标准输出重定向到文件

variables - 如何在批处理文件中使用空格传递命令行参数

unix - 确定 fork/exec 成功或失败的标准方法(当父进程同时运行时)?

c - 允许使用 execvp 执行程序

java - 使用相关表中的参数从表中选择

java - pattern.compile 帮助 java 程序

java - 尝试运行 pdfbox 程序时出错

windows - 批处理目录中的所有文件

c - 艰难调试神秘的git+ssh+proxy失败 "bash: No such file or directory"