Java程序在调用批处理文件之前退出

时间:2015-02-19 09:47:30

标签: java batch-file

我编写了一个简单的java程序来调用批处理文件。问题是,当我运行这个Java程序没有任何反应时,批处理文件不会被执行。但是当我在调试模式下逐行执行相同的程序时,批处理文件就会被执行。

我怀疑这里的问题是我的JVM在我的进程实际完成之前正在关闭。我可以放入Thread.sleep()但我不想这样做。 是否有其他方法可以完成我的流程,然后关闭JVM。

public static void main(String[] args) {

    String batchFilePath = "D:\\MyDir";
    String batchFileName = "callMe.bat";
    executeBatchFile(batchFilePath, batchFileName);
}

public static void executeBatchFile(String filePath, String fileName) {
    try {
    List cmdAndArgs = Arrays.asList("cmd", "/c", fileName);
    ProcessBuilder pb = new ProcessBuilder(cmdAndArgs);
    pb.directory(new File(filePath));
    Process p = pb.start();
    } catch (Exception e) {
        e.printStackTrace();
    }

1 个答案:

答案 0 :(得分:2)

您可以使用ProcessBuilder的waitFor方法等待已启动的进程完成。以下是来自javadocs的waitFor

的说明
  

如果需要,导致当前线程等待,直到进程   由此Process对象表示已终止。此方法返回   如果子进程已经终止,则立即执行。如果   子进程尚未终止,调用线程将被阻塞   直到子进程退出。