Eu entendi!
Eu fiz uma tarefa agendada que dispara quando o computador está ocioso e executa repetidamente um arquivo em lote que verifica se a bateria está descarregando e quantos carrega.
Se a bateria estiver descarregada (ou seja, o laptop não estiver conectado à rede elétrica) e a bateria estiver carregada 25% ou menos, ela colocará o computador imediatamente em repouso (ou hibernará, se já estiver ligado).
A tarefa é configurada para se repetir (ou seja, executar o arquivo em lote) a cada 5 minutos indefinidamente. Além disso, certifique-se de definir as seguintes condições:
Eubaseeimeuscriptemloteembattstat.bat
aqui:
Você encontrará meu script abaixo.
@ECHO OFF
:: Localize variables
SETLOCAL
:: Use WMI to retrieve battery status information
FOR /F "tokens=* delims=" %%A IN ('WMIC /NameSpace:"\root\WMI" Path BatteryStatus Get PowerOnline^,RemainingCapacity /Format:list ^| FIND "="') DO SET Battery.%%A
FOR /F "tokens=* delims=" %%A IN ('WMIC /NameSpace:"\root\WMI" Path BatteryFullChargedCapacity Get FullChargedCapacity /Format:list ^| FIND "="') DO SET Battery.%%A
:: Calculate runtime left and capacity
SET /A Battery.RemainingCapacity = ( %Battery.RemainingCapacity%00 + %Battery.FullChargedCapacity% / 2 ) / %Battery.FullChargedCapacity%
:: Display results
IF /I "%Battery.PowerOnline%"=="FALSE" (
IF %Battery.RemainingCapacity% LEQ 25 (
Rundll32.exe Powrprof.dll,SetSuspendState Sleep
)
)
GOTO:EOF
:: End localization
IF "%OS%"=="Windows_NT" ENDLOCAL