如何在Java结束时运行批处理文件时收到通知?

时间:2011-08-31 07:56:08

标签: java batch-file

我从我的Java代码中执行了一个批处理文件,如下所示:

Runtime.getRuntime().exec("cmd /c start update.bat");

我想知道在这个批处理脚本完成时是否可以收到任何通知。可能吗?

此致

阿南德

3 个答案:

答案 0 :(得分:3)

保留对Process的引用并等待该进程停止,这将停止您的执行。

 Process proc = Runtime.getRuntime().exec("cmd /c start update.bat");
 int exitVal = proc.waitFor();

这是link (When Runtime.exec() won't)中的好例子。如果您阅读整篇文章,您将避免并理解exec命令的许多缺陷。

然后你可以阅读ProcessBuilder,这是一种更现代的方式来调用其他进程。

答案 1 :(得分:1)

您需要知道的所有内容,包括代码示例。

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

答案 2 :(得分:1)

您可以使用默认的Java ProcessBuilder。

  ProcessBuilder builder = new ProcessBuilder("cmd", "/c", "start", "update.bat");
  builder.start();
  builder.waitFor();

waitFor的调用将被阻止,因此一旦它返回,您就知道您的批处理脚本已完成。

或者,您可以使用commons-exec jar。这有更多选项可用于检查结果,并且不会阻止您的线程。有关其工作原理,请参阅this example