如何给予等待和在java中关闭命令提示符

时间:2009-02-23 17:32:37

标签: java process batch-file

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

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

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

5 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:3)

最直接的方法是使用您创建的流程对象的.waitFor()方法:pr.waitFor();

这是一个阻塞调用,这意味着在此调用返回之前不会执行其他代码。

答案 2 :(得分:1)

正如其他人所说,您可以使用Process.waitFor()。但是,在执行此操作之前,必须启动另一个不断读取进程输出和错误流内容的线程;否则,如果出现导致大量输出的错误,您的应用程序将会挂起。

或者,您可以让批处理文件将输出和错误重定向到文件。

答案 3 :(得分:0)

查看Process类的文档。

答案 4 :(得分:0)

您可以从流程中跟踪InputStreamReader。 并跟踪bat文件中的行。

当您是EOF时,请退出命令行

请参阅示例或完整源代码。 click here