如何在Java中执行等待和关闭命令提示符

4

我正在使用以下代码来执行批处理文件:

java.lang.Runtime rt = java.lang.Runtime.getRuntime();
Process pr = rt.exec("MyBatch.bat");

我的批处理文件执行需要一些时间。我希望我的servlet进程等待批处理文件执行完成。我想在执行批处理文件后关闭命令提示符。如何做到这一点?


@m.mahesh2000,你解决了这个问题吗? - vladr
你也可以尝试使用pr.destroy()。 - SSaikia_JtheRocker
5个回答

9

使用Process.waitFor()方法,使您的线程等待批处理文件执行完成。

java.lang.Runtime rt = java.lang.Runtime.getRuntime();
Process pr = rt.exec("MyBatch.bat");
pr.waitFor();

如果您需要访问控制台的输出和/或输入,您可能还想考虑使用ProcessBuilder而不是Runtime.getRuntime().exec()


4
最直接的方法是使用您创建的进程对象的.waitFor()方法:pr.waitFor(); 这是一个阻塞调用,意味着在此调用返回之前不会执行任何其他代码。

1
正如其他人所说,您可以使用Process.waitFor()。但是,在执行此操作之前,您必须启动另一个线程,不断读取进程输出和错误流的内容;否则,如果有导致大量输出的错误,您的应用程序将挂起。
或者,您可以让批处理文件将输出和错误重定向到文件中。

0

1
哇,因为我让发帖者自己动手做点工作而被扣1分? - Miserable Variable

0

你可以从进程中跟踪InputStreamReader,并跟踪bat文件中的行。

当你到达EOF时,退出命令行。

查看示例或完整源代码。 点击这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接