我正在尝试通过执行批处理文件并返回结果来创建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
最终我希望能够循环此代码以不断更新值,但我不确定如何才能完成(在一个单独的线程上可能?)。帮助和服务将不胜感激
答案 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
的行结尾(显然只适用于数字 - 适用于这种情况)