从Java调用WMIC.EXE(挂起)

时间:2015-11-19 19:42:01

标签: java windows subprocess

我试图从Java调用WMIC.EXE来获取电池信息。

以下是JavaX(扩展Java方言)中的源代码:http://tinybrain.de/1001824

要查看等效的Java源代码,请查看here(前60行非常重要,非常重要。)

您可以使用x30.jar运行此程序,或者只编译并运行Java source

基本上它只生成一个进程(通过.bat文件)并获取其输出。 “反引号”功能适用于其他所有功能,包括Windows上的内容。只是没有与WMIC - 一切都挂起。

命令运行是这样的:

WMIC Path Win32_Battery Get EstimatedChargeRemaining /Format:List

在命令提示符下运行它工作正常...只是不在Java中。事实上,Java对子进程很奇怪。

有什么想法吗?感谢...

1 个答案:

答案 0 :(得分:0)

我相信这是https://stackoverflow.com/a/13367685/3196753的副本。

报价:

  

在获取和使用OutputStream之前,您需要获取并关闭InputStream。这将向您确认已开始的过程已经完成向该过程发送输入(在这种情况下,没有输入)。

p.getOutputStream().close();
     

请记住,在Process对象上,getInputStream()的输入来自流程的输出流,getOutputStream()的输出进入流程的输入流。