常用的电池健康度检测方法多样,常见用鲁大师来生成硬件报告;或者更简单用windows下读取笔记本电脑电池健康度数值并计算百分比值,方式为powercfg /batteryreport生成的battery-report.html,读取以下内容即可。
计算健康度:DESIGN CAPACITY 及 FULL CHARGE CAPACITY 的mWh
以下是Python实现,可以读取Windows电池报告HTML文件并计算电池健康度百分比:
import re
import os
from pathlib import Pathdef extract_battery_health(html_content):"""从电池报告HTML内容中提取电池健康度信息Args:html_content (str): HTML文件内容Returns:tuple: (设计容量, 满充容量, 健康度百分比, 循环次数)"""# 设计容量正则表达式design_capacity_pattern = r'DESIGN CAPACITY[\s\S]*?>([\d,]+)\s*mWh'# 满充容量正则表达式full_charge_pattern = r'FULL CHARGE CAPACITY[\s\S]*?>([\d,]+)\s*mWh'# 循环次数正则表达式cycle_count_pattern = r'CYCLE COUNT[\s\S]*?>([\d,]+)'design_capacity = Nonefull_charge_capacity = Nonecycle_count = None# 查找设计容量design_match = re.search(design_capacity_pattern, html_content, re.IGNORECASE)if design_match:design_capacity = int(design_match.group(1).replace(',', ''))# 查找满充容量full_charge_match = re.search(full_charge_pattern, html_content, re.IGNORECASE)if full_charge_match:full_charge_capacity = int(full_charge_match.group(1).replace(',', ''))# 查找循环次数cycle_match = re.search(cycle_count_pattern, html_content, re.IGNORECASE)if cycle_match:cycle_count = int(cycle_match.group(1).replace(',', ''))# 计算健康度百分比health_percentage = Noneif design_capacity and full_charge_capacity and design_capacity > 0:health_percentage = (full_charge_capacity / design_capacity) * 100return design_capacity, full_charge_capacity, health_percentage, cycle_countdef read_battery_report(file_path):"""读取电池报告文件Args:file_path (str): HTML文件路径Returns:dict: 电池信息字典"""try:with open(file_path, 'r', encoding='utf-8') as file:html_content = file.read()design, full_charge, health, cycles = extract_battery_health(html_content)if design is None or full_charge is None:return {'success': False,'error': '未找到电池容量信息','data': None}result = {'success': True,'error': None,'data': {'design_capacity_mwh': design,'full_charge_capacity_mwh': full_charge,'health_percentage': round(health, 2) if health else None,'cycle_count': cycles,'design_capacity_formatted': f"{design:,} mWh",'full_charge_formatted': f"{full_charge:,} mWh",'health_status': get_health_status(health) if health else None}}return resultexcept FileNotFoundError:return {'success': False,'error': f'文件未找到: {file_path}','data': None}except Exception as e:return {'success': False,'error': f'读取文件时出错: {str(e)}','data': None}def get_health_status(percentage):"""根据健康度百分比返回状态描述Args:percentage (float): 健康度百分比Returns:str: 状态描述"""if percentage >= 90:return "优秀"elif percentage >= 80:return "良好"elif percentage >= 70:return "一般"elif percentage >= 60:return "较差"else:return "需要更换"def generate_battery_report():"""生成电池报告文件Returns:str: 生成的报告文件路径"""try:# 生成电池报告os.system('powercfg /batteryreport /output "battery-report.html"')# 检查文件是否生成if os.path.exists("battery-report.html"):return os.path.abspath("battery-report.html")else:return Noneexcept Exception as e:print(f"生成电池报告时出错: {e}")return Nonedef main():"""主函数"""print("=" * 50)print("电池健康度检测工具")print("=" * 50)# 检查是否已有电池报告文件report_files = list(Path('.').glob('battery-report.html'))if not report_files:print("未找到电池报告文件,正在生成...")report_path = generate_battery_report()if not report_path:print("无法生成电池报告,请确保以管理员权限运行此程序")returnprint(f"电池报告已生成: {report_path}")else:report_path = str(report_files[0])print(f"使用现有电池报告: {report_path}")print("\n" + "-" * 50)print("分析电池报告...")print("-" * 50)# 读取并分析电池报告result = read_battery_report(report_path)if not result['success']:print(f"错误: {result['error']}")returndata = result['data']print(f"\n电池信息:")print(f" 设计容量: {data['design_capacity_formatted']}")print(f" 当前满充容量: {data['full_charge_formatted']}")print(f" 循环次数: {data['cycle_count']}")print(f" 健康度: {data['health_percentage']:.2f}%")print(f" 状态: {data['health_status']}")print("\n" + "=" * 50)print("建议:")health = data['health_percentage']if health >= 80:print(" ✓ 电池状态良好,可继续正常使用")elif health >= 60:print(" ⚠ 电池健康度一般,建议注意使用习惯")print(" - 避免长时间满电存放")print(" - 避免完全耗尽电量")print(" - 保持系统电源管理设置合理")else:print(" ✗ 电池健康度较差,建议考虑更换")print(" - 联系设备厂商或专业维修人员")print(" - 考虑使用电源适配器供电")# 提供估算的剩余容量if health:estimated_mwh = data['design_capacity_mwh'] * health / 100print(f"\n估算剩余容量: {estimated_mwh:,.0f} mWh")print("=" * 50)input("\n按任意键退出...")if __name__ == "__main__":main()
这个脚本提供了以下功能:
-
主要功能:
- 自动查找或生成电池报告文件
- 从HTML文件中提取电池容量信息
- 计算电池健康度百分比
- 显示循环次数
-
额外功能:
- 电池状态评估(优秀、良好、一般、较差、需要更换)
- 使用建议
- 错误处理
- 格式化输出
-
使用方法:
- 直接运行脚本,它会自动查找现有的
battery-report.html文件 - 如果没有找到,会自动生成新的电池报告
- 需要管理员权限来生成电池报告
- 直接运行脚本,它会自动查找现有的
-
输出示例:
==================================================
电池健康度检测工具
==================================================
未找到电池报告文件,正在生成...
电池报告已生成: C:\Users\Username\battery-report.html--------------------------------------------------
分析电池报告...
--------------------------------------------------电池信息:设计容量: 45,000 mWh当前满充容量: 32,290 mWh循环次数: 73健康度: 71.76%状态: 一般==================================================
建议:⚠ 电池健康度一般,建议注意使用习惯- 避免长时间满电存放- 避免完全耗尽电量- 保持系统电源管理设置合理估算剩余容量: 32,290 mWh
==================================================
注意:如果要以管理员权限运行,可以在命令提示符中使用:
python battery_health.py