【问题标题】:Run bat file in Java and wait在 Java 中运行 bat 文件并等待
【发布时间】:2010-03-12 16:27:45
【问题描述】:

您会认为从 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 分钟。我尝试删除开始但无济于事。我尝试了很多变化,但它让我无处可去。关于如何完成这个简单任务的任何想法?

【问题讨论】:

    标签: java batch-file exec


    【解决方案1】:

    您不应忽略.exec() 的返回值。它给你一个Process 对象,你可以waitFor(),像这样:

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

    【讨论】:

      【解决方案2】:

      你需要在进程exec调用返回时使用waitFor

      【讨论】:

      • 感谢它的工作,但 mmyers 以 2 秒的优势击败了你并举了一个例子:P +1 虽然
      • @Savvas:实际上他比我快了 24 秒,但也许是因为这个例子...... :)
      • :) 我希望我能给你 2+ 然后:P
      猜你喜欢
      • 1970-01-01
      • 2014-08-23
      • 2019-02-04
      • 2019-05-27
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多