当批处理文件在java结束时,我如何得到通知



我在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。这有更多的选项来检查结果,并且不会阻塞线程。

最新更新