使用批处理文件在java中获取CPU使用时遇到问题

时间:2015-11-25 08:21:36

标签: java batch-file cpu-usage

我正在尝试通过执行批处理文件并返回结果来创建CPU使用率计。这是获取CPU使用率的方法。当批处理文件运行时,它以一种奇怪的格式返回结果,所以我通过它来查找唯一的数字,即CPU使用百分比。我遇到的问题是,我在从字符串转换它之后无法返回数字并尝试将其存储在变量中。这是代码:

public int getCPUload (){
String s = "";
int r = 0;
try {
    Process ps = Runtime.getRuntime().exec("Pc.bat");
    BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
    while((s = br.readLine()) != null) {
       if(s.matches(".*\\d+.*")){
          r = Integer.parseInt(s);
       } 
    }

}
catch( Exception ex ) {
    System.out.println("ERR: "+ex.toString());
}
    return r;
}

这是批处理文件“PC.bat”:

wmic cpu get loadpercentage

最终我希望能够循环此代码以不断更新值,但我不确定如何才能完成(在一个单独的线程上可能?)。帮助和服务将不胜感激

1 个答案:

答案 0 :(得分:2)

使用for来解析命令的输出:

for /f "tokens=2 delims==" %%i in ('wmic cpu get loadpercentage /value') do set /a cpu=%%i
echo %cpu%

set /a摆脱了"奇怪的" wmic的行结尾(显然只适用于数字 - 适用于这种情况)