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

相關內容