从java运行bat文件

从java运行bat文件,java,batch-file,Java,Batch File,我需要从java运行bat文件。这是我用来做这个的代码 public static void main(String[] args) { try { ProcessBuilder pb = new ProcessBuilder("C:\\test\\test.bat"); Process p = pb.start(); BufferedReader reader = new BufferedReader(new InputStreamRea

我需要从java运行bat文件。这是我用来做这个的代码

public static void main(String[] args) {
    try {
        ProcessBuilder pb = new ProcessBuilder("C:\\test\\test.bat");
        Process p = pb.start();
        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = null;
        while ((line = reader.readLine()) != null)
        {
            System.out.println(line);
        }      
        p.waitFor();
    } catch (IOException ex) {
        Logger.getLogger(JavaApplication1.class.getName()).log(Level.SEVERE, null, ex);
    } catch (InterruptedException ex) {
        Logger.getLogger(JavaApplication1.class.getName()).log(Level.SEVERE, null, ex);
    } 
}
这段代码运行良好。但是如果我为bat文件程序添加等待代码,那么等待永远不会结束。这是bat文件

@echo off
echo harshana
echo harshana
echo harshana
choice /d y /t 5 > nul
echo Times up! Here I go again...
echo harshana10

当我在cmd中运行这个bat文件时,它会回显3次“harshana”,然后等待5秒钟。然后重复其余的。但是,当我从java代码运行bat文件时,那是“时间到了!”!我又来了……“harshana10”没有打印,java代码也没有退出(等待)。我如何解决这个问题

检查test.bat是否仍在运行,waitfor将导致当前线程等待,直到执行的进程终止。尝试exitValue()方法而不是waitFor当我从cmd运行bat文件时,我将在5秒后立即终止。exitValue()也不起作用。为什么添加“waitFor();”,您不需要。如果蝙蝠退出,我们的main()也将结束。因为reader.readLine()会一直阻塞,直到连接取消。我添加它是因为程序应该在进程完成后结束,