我在Java代码中执行了一个批处理文件,如下所示:
Runtime.getRuntime().exec("cmd /c start update.bat");
我想知道当这个批处理脚本完成时,我是否可以得到任何通知。这可能吗?
问候,
Anand
保持对进程的引用并等待进程停止,这将停止您的执行。
Process proc = Runtime.getRuntime().exec("cmd /c start update.bat");
int exitVal = proc.waitFor();
做这个链接中的好例子(当Runtime.exec()不会)。如果您阅读了整篇文章,您将避免并理解exec命令的许多陷阱。
然后你可以阅读ProcessBuilder
,这是一个更现代的方式来调用其他进程。
你需要知道的一切,用代码示例。
http://www.javaworld.com/javaworld/jw - 12 - 2000/jw - 1229 traps.html
您可以使用默认的Java ProcessBuilder。
ProcessBuilder builder = new ProcessBuilder("cmd", "/c", "start", "update.bat");
builder.start();
builder.waitFor();
对waitFor
的调用将阻塞,因此一旦它返回,您就知道批处理脚本完成了。
或者,您可以使用commons-exec jar。这有更多的选项来检查结果,并且不会阻塞线程。