1、打开命令提示符:
按 Win + R
,输入 cmd
,然后按 Enter
。
2、列出电源计划的GUID
powercfg /list
获取输出结果取下:
C:\Users\Administrator>powercfg /list
现有电源使用方案 (* Active)
-----------------------------------
电源方案 GUID: 381b4222-f694-41f0-****-ff5bb260df2e (平衡)
电源方案 GUID: 8c5e7fda-e8bf-4a96-****-a6e23a8c635c (高性能) *
电源方案 GUID: a1841308-3541-4fab-****-f71556f20b4a (节能)
电源方案 GUID: e34effd5-6495-415f-****-7318bc95e92c (卓越性能)
此处隐藏掉了部分数字,正常获取没有*
下面的示例代码同理,需要自行替换GUID
3、新建txt文件,重命名为 ModifyPowerPlan.bat
,切记需要改文件后缀
批处理文件内容如:
当前bat文件的实现效果为: 每次双击执行文件,电源模式切换到
性能模式
,休眠时间在0分钟(永不休眠)和3分钟之间切换
@echo off
REM support chinese
chcp 65001
setlocal enabledelayedexpansion
REM 选择高性能或平衡模式
::set GUIDNAME=SCHEME_BALANCED
set GUIDNAME=SCHEME_MIN
REM key1:使计算机进入睡眠状态的时间
set key1=STANDBYIDLE
REM key2:关闭显示器的时间
set key2=VIDEOIDLE
REM 睡眠时间 0 或 3分钟
set time_choose1=0
set time_choose2=3
REM 调用函数并传递参数
set key=%key1%
call :GetAcPowerIndex %GUIDNAME% %key% %time_choose1% %time_choose2%
set key=%key2%
call :GetAcPowerIndex %GUIDNAME% %key% %time_choose1% %time_choose2%
pause
exit /b
REM 函数放在使用的后面
:GetAcPowerIndex
set highPerformanceGUID=8c5e7fda-e8bf-4a96-****-a6e23a8c635c
set balancedGUID=381b4222-f694-41f0-****-ff5bb260df2e
set setGUIDName=%~1
set setGUID=
set key=%~2
set lineCount=0
set outputLines=0
set acPowerIndex=
REM 检查GUID的模式
if "!setGUIDName!"=="SCHEME_MIN" (
::echo %setGUIDName% is SCHEME_MIN.
echo 切换到高性能电源计划
REM 保在设置变量时没有多余的空格
set setGUID=%highPerformanceGUID%
) else (
::echo %setGUIDName% is SCHEME_BALANCED.
echo 切换到平衡电源计划
REM 保在设置变量时没有多余的空格
set setGUID=%balancedGUID%
)
REM 切换到电源计划
powercfg /setactive %setGUID%
for /f "delims=" %%i in ('powercfg /query %highPerformanceGUID%') do (
if !outputLines! lss 6 (
echo %%i | findstr /i %key% >nul
if not errorlevel 1 (
set outputLines=0
set lineCount=1
) else (
if !lineCount! gtr 0 (
::echo %%i
set /a outputLines+=1
if !outputLines! equ 5 (
set acPowerIndex=%%i
)
)
)
)
)
for /f "tokens=2 delims=: " %%j in ("%acPowerIndex%") do (
set acPowerIndexValue=%%j
)
REM 将十六进制转换为十进制
set /a decimalValue=0x!acPowerIndexValue:~2!
REM 除以 60
set /a result=decimalValue / 60
set target=
if !result! == %3 (
echo %result% is equal to %3
set target=%4
) else (
if !result! == %4 (
echo %result% is equal to %4
set target=%3
) else (
echo Error: %result% is not equal %3 or %4
exit /b 0
)
)
echo change %key% value to %target%
if "!key!"=="STANDBYIDLE" (
powercfg /change standby-timeout-ac !target%!
echo %key% is STANDBYIDLE.
)
if "!key!"=="VIDEOIDLE" (
powercfg /change monitor-timeout-ac !target!
echo %key% is VIDEOIDLE.
)
goto:eof
4、自定义参数
(1)性能模式选择
REM 选择高性能或平衡模式
::set GUIDNAME=SCHEME_BALANCED
set GUIDNAME=SCHEME_MIN
行首的 ::
为注释,可以自行选择模式
(2)休眠时间设置
REM 睡眠时间 0 或 3分钟
set time_choose1=0
set time_choose2=3
休眠时间可以自行修改,单位分钟
5、执行效果
双击bat文件即可执行
控制台输出结果:
Active code page: 65001
切换到高性能电源计划
0 is equal to 0
change STANDBYIDLE value to 3
STANDBYIDLE is STANDBYIDLE.
切换到高性能电源计划
0 is equal to 0
change VIDEOIDLE value to 3
VIDEOIDLE is VIDEOIDLE.
Press any key to continue . . .
change STANDBYIDLE value to 3
表示切换到3分钟休眠
Active code page: 65001
切换到高性能电源计划
3 is equal to 3
change STANDBYIDLE value to 0
STANDBYIDLE is STANDBYIDLE.
切换到高性能电源计划
3 is equal to 3
change VIDEOIDLE value to 0
VIDEOIDLE is VIDEOIDLE.
Press any key to continue . . .
change STANDBYIDLE value to 0
表示切换到0分钟休眠(永不休眠)