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()

这个脚本提供了以下功能:

  1. 主要功能

    • 自动查找或生成电池报告文件
    • 从HTML文件中提取电池容量信息
    • 计算电池健康度百分比
    • 显示循环次数
  2. 额外功能

    • 电池状态评估(优秀、良好、一般、较差、需要更换)
    • 使用建议
    • 错误处理
    • 格式化输出
  3. 使用方法

    • 直接运行脚本,它会自动查找现有的battery-report.html文件
    • 如果没有找到,会自动生成新的电池报告
    • 需要管理员权限来生成电池报告
  4. 输出示例

==================================================
电池健康度检测工具
==================================================
未找到电池报告文件,正在生成...
电池报告已生成: C:\Users\Username\battery-report.html

--------------------------------------------------
分析电池报告...
--------------------------------------------------

电池信息:
  设计容量: 45,000 mWh
  当前满充容量: 32,290 mWh
  循环次数: 73
  健康度: 71.76%
  状态: 一般

==================================================
建议:
  ⚠ 电池健康度一般,建议注意使用习惯
     - 避免长时间满电存放
     - 避免完全耗尽电量
     - 保持系统电源管理设置合理

估算剩余容量: 32,290 mWh
==================================================

注意:如果要以管理员权限运行,可以在命令提示符中使用:

python battery_health.py

posted on 2026-01-21 20:43  igaoyuan  阅读(6)  评论(0)    收藏  举报

导航