Windows下笔记本电脑电池健康度专一简单检测
常用的电池健康度检测方法多样,常见用鲁大师来生成硬件报告;或者更简单用windows下读取笔记本电脑电池健康度数值并计算百分比值,方式为powercfg /batteryreport生成的battery-report.html,读取以下内容即可。
计算健康度:DESIGN CAPACITY 及 FULL CHARGE CAPACITY 的mWh
以下是Python实现,可以读取Windows电池报告HTML文件并计算电池健康度百分比:
import re
import os
from pathlib import Path
def 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 = None
full_charge_capacity = None
cycle_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 = None
if design_capacity and full_charge_capacity and design_capacity > 0:
health_percentage = (full_charge_capacity / design_capacity) * 100
return design_capacity, full_charge_capacity, health_percentage, cycle_count
def 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 result
except 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 None
except Exception as e:
print(f"生成电池报告时出错: {e}")
return None
def 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("无法生成电池报告,请确保以管理员权限运行此程序")
return
print(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']}")
return
data = 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 / 100
print(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
浙公网安备 33010602011771号