从Java执行命令并等待命令完成

在我的Java程序中,我创建了一个执行命令来运行批处理文件的进程,如下所示:

try { File tempFile = new File("C:/Users/Public/temp.cmd"); tempFile.createNewFile(); tempFile.deleteOnExit(); setContents(tempFile, recipe.getText()); //Writes some user input to file String cmd = "cmd /c start " + tempFile.getPath(); Process p = Runtime.getRuntime().exec(cmd); int exitVal = p.waitFor(); refreshActionPerformed(evt); } catch (InterruptedException ex) { Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex); } 

现在,我想要发生的是命令

 refreshActionPerformed(evt); 

仅在我调用的批处理文件完成执行后运行。 但是现在,它在命令提示符打开后立即运行。

我该如何解决?

我想在其他地方找到答案。 要保持初始进程打开,直到批处理文件完成,您只需要“/ wait”

 Process p = Runtime.getRuntime().exec("cmd /C start /wait filepath.bat"); int exitVal = p.waitFor(); 

调用“cmd / c start”会导致cmd触发另一个实例并立即退出。 尝试取出“开始”命令。

答案是正确的。 我补充说,代码打开的窗口需要手动关闭。

 Process p = Runtime.getRuntime().exec("cmd /C start /wait filepath.bat"); int exitVal = p.waitFor();