使用runtime()。exec执行命令

时间:2011-09-01 09:26:38

标签: java runtime.exec

我尝试使用以下方法检查Windows上是否安装了服务:

Process p = Runtime.getRuntime().exec(
   "sc query type= service state= all | find\"postgresql\"");

但是输出就像我自己执行了sc命令一样(帮助信息)。通过cmd执行相同的字符串时,它可以正常工作。

2 个答案:

答案 0 :(得分:1)

试试这样:

String[] cmd = new String[4]; 
cmd[0] = "sc"; 
cmd[1] = "query"; 
cmd[2] ="type=service"; 
cmd[3] = "state= all | find\"postgresql\"";

Process p = Runtime.getRuntime().exec(cmd);

答案 1 :(得分:0)

我有同样的问题并尝试使用数组的解决方案,但它对我不起作用。

所以我使用下面的命令。在我的情况下,我必须在返回中搜索服务,因为我没有确切的服务名称。在您的情况下,您可以将进程名称或服务器名称放在WHERE子句中:

Process process = Runtime.getRuntime().exec("wmic SERVICE WHERE State=\"Running\" get Name,PathName /format:LIST");

重要提示:wmic仅存在于Windows XP Professional或更高版本中!