【发布时间】:2011-09-20 15:35:49
【问题描述】:
在我的 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);
仅在我调用的批处理文件完成执行后运行。但是现在,它会在命令提示符打开后立即运行。
我该如何解决这个问题?
【问题讨论】:
-
请务必阅读并实施所有When Runtime.exec() won't的建议。否则你几乎肯定会体验到“不会”。还可以考虑将
ProcessBuilder用于 1.5+ 并将参数作为数组传递。 -
我读过 When Runtime.exec() won't,但坦率地说,我对 Java 编程完全陌生,我不知道如何实现那篇文章的建议。
标签: java batch-file command exec execute