计算机在特定电池电量水平时空闲时自动休眠

计算机在特定电池电量水平时空闲时自动休眠

我可以在任务计划程序中创建一个任务,当空闲计算机达到特定电池电量水平时启动该任务以进入睡眠状态吗?Windows 确实提供了让计算机在特定电池电量水平时进入睡眠状态的选项,但它并不关心笔记本电脑是否处于空闲状态。

答案1

我得到了它!

我制定了一个计划任务计算机空闲时触发,并反复运行批处理文件,检查电池是否正在放电以及目前电量为多少百分比。

如果电池正在放电(即笔记本电脑未插入电源),并且电池电量为 25% 或更少,它会立即让计算机进入睡眠状态(如果已经打开,则进入休眠状态)。

该任务设置为无限期地每 5 分钟重复一次(即运行批处理文件)。此外,请确保设置以下条件: 空闲触发条件

我的批处理脚本基于battstat.bat此处:http://www.robvanderwoude.com/wmiexamples.php

您将在下面找到我的脚本。

@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

相关内容