Windows 11 中笔记本电脑条件电源管理的方法

Windows 11 中笔记本电脑条件电源管理的方法

我想根据电池的充电水平设置条件电源管理规则。

我目前已为通电和电池供电设置了适当的规则。除此之外,如果电池电量超过 75%,我希望应用通电设置。这样做的目的是当电池电量充足时,停止应用我的激进睡眠设置。我还没有想出一种方法来做到这一点,但我想也许一个 python 脚本可以根据电量水平更改电池供电电源设置。这将涉及我安装 python,并将脚本作为服务运行。我不确定,但我怀疑该脚本可能需要管理员权限。

在我开始研究这个想法之前,我想知道是否有更好、更简单的方法来做到这一点,因为要求似乎并不复杂。

有没有根据电池电量百分比来设置 Windows 系统中的电源设置的方法?

答案1

我最终编写了一个 Python 脚本来管理它。它只需要 Python,不需要管理员权限,也不需要额外的模块。

import subprocess
import time
import datetime

battery_watermark = 75
sleep_on_battery_mins = 20

def set_standby_timeout_dc(mins):
    return subprocess.call("powercfg -change -standby-timeout-dc " +str(mins))

def battery_precentage():
    return int(subprocess.run(["WMIC", "PATH", "Win32_Battery", "Get", "EstimatedChargeRemaining"], capture_output=True).stdout.decode().split("\n")[1][:3].strip())

def on_battery():
    #BatteryStatus returns 2 when connected to AC.
    charging_status = int(subprocess.run(["WMIC", "PATH", "Win32_Battery", "Get", "BatteryStatus"], capture_output=True).stdout.decode().split("\n")[1].strip())
    if charging_status == 2:
        return False
    else:
        return True

print("Windows Power settings changer")
starttime = time.time()
while True:
    if (battery_precentage() > battery_watermark) and on_battery():
            print(str(datetime.datetime.now()) + ": Setting on-battery standby timeout to 0, battery at " + str(battery_precentage()) + "%, on battery: " + str(on_battery()))
            set_standby_timeout_dc(0)
    else:
        print(str(datetime.datetime.now()) + ": Setting on-battery standby timeout to " + str(sleep_on_battery_mins) + ", battery at " + str(battery_precentage()) + "%, on battery: " + str(on_battery()))
        set_standby_timeout_dc(sleep_on_battery_mins)
    time.sleep(((sleep_on_battery_mins/2)-1)*60 - ((time.time() - starttime) %60))

相关内容