与运行时执行命令(时)EXEC
问题描述:
我尝试检查是否安装了Windows上的服务使用:与运行时执行命令(时)EXEC
Process p = Runtime.getRuntime().exec(
"sc query type= service state= all | find\"postgresql\"");
,但输出是完全一样的,如果我本身执行的sc
命令(帮助信息)。当通过cmd
执行相同的字符串时,它可以正常工作。
答
尝试这样的:
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);
答
我有同样的问题,用数组试图解决方案,但它并没有为我工作。
所以我使用了下面的命令。在我的情况下,我不得不在返回中搜索服务,因为我没有确切的服务名称。你的情况,你可以把进程的名称或服务器名称的WHERE子句中:
Process process = Runtime.getRuntime().exec("wmic SERVICE WHERE State=\"Running\" get Name,PathName /format:LIST");
重要提示:WMIC存在只是在Windows XP Professional或更高!