我从我的Java代码中执行了一个批处理文件,如下所示:
Runtime.getRuntime().exec("cmd /c start update.bat");
我想知道在这个批处理脚本完成时是否可以收到任何通知。可能吗?
此致
阿南德
答案 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。