1

Например, различные схемы электропитания, которые у меня есть на моем Dell e6420, перечислены как:

Как я могу связать эти параметры с сочетанием клавиш, чтобы я мог а) переключаться между ними или б) перебирать планы?

1 ответ1

1

Как я уже говорил в моем ответе здесь, вы можете проверить GUIDs для различных планов и создать отдельные ярлыки (с помощью быстрых клавиш) в Windows\System32\Powercfg.exe активировать каждый план (обратите внимание на поле Target ниже):

1

Однако, чтобы упростить задачу, чтобы вам не приходилось искать и аккуратно копировать + вставлять все эти GUID, я подготовил для вас несколько пакетных файлов.

Первый, PowerPlanAlter.bat, позволит вам быстро переключаться между всеми доступными планами в вашей системе, используя только номер. Запуск без аргумента выведет что-то вроде этого:

Usage: PowerPlanAlter [Number]

  1 = "Balanced" [GUID = 381b4222-f694-41f0-9685-ff5bb260df2e]
  2 = "High performance" [GUID = 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c]
  3 = "My Custom Plan 1 (Reduced fan speeds)" [GUID = 938ef152-e95f-4aed-acea-e1c8a0f4493f]
  4 = "My Custom Plan 1 (Increased fan speeds)" [GUID = 9d2a75cb-f035-4376-92db-36fa01e271d2]
  5 = "Power saver" [GUID = a1841308-3541-4fab-bc81-f71556f20b4a]

Current power plan = "Balanced" [GUID = 381b4222-f694-41f0-9685-ff5bb260df2e]

Вы можете вызвать его из командной строки или создать для него несколько ярлыков, по одному на план. Вот код:

@echo off
set pcnt=0
setlocal enableextensions enabledelayedexpansion
for /f "skip=3 tokens=2* delims=:(" %%a in ('powercfg -l') do (
    set /a pcnt+=1
    set tmp=%%b
    if [!tmp:~-1!]==[^)] set tmp=!tmp:~,-1!
    if [!tmp:~-1!]==[*] set tmp=!tmp:~,-3!&& set cp=!pcnt!
    set pname_!pcnt!=!tmp!
    for /f %%c in ("%%a") do set pguid_!pcnt!=%%c
)
echo.
powercfg -s !pguid_%1! 2>NUL
if errorlevel 1 (
    echo Usage: %0 [Number]
    echo.
    for /l %%d in (1,1,!pcnt!) do echo   %%d = "!pname_%%d!" [GUID = !pguid_%%d!]
    echo.
    for /l %%e in (!cp!,1,!cp!) do echo Current power plan = "!pname_%%e!" [GUID = !pguid_%%e!]
) else (
    for /l %%f in (!cp!,1,!cp!) do echo Old power plan = "!pname_%%f!" [GUID = !pguid_%%f!]
    echo.
    echo New power plan = "!pname_%1!" [GUID = !pguid_%1!]
)

Второй, PowerPlanCycle.bat, позволит вам быстро переключаться между всеми доступными планами в вашей системе. Никаких аргументов не требуется; просто создайте для него ярлык, и каждый раз, когда вы его запускаете, будет активирован следующий план в строке (возврат к первому после последнего). Вот код:

@echo off
set pcnt=0
setlocal enableextensions enabledelayedexpansion
for /f "skip=3 tokens=2* delims=:(" %%a in ('powercfg -l') do (
    set /a pcnt+=1
    set tmp=%%b
    if [!tmp:~-1!]==[^)] set tmp=!tmp:~,-1!
    if [!tmp:~-1!]==[*] set tmp=!tmp:~,-3!&& set cp=!pcnt!
    set pname_!pcnt!=!tmp!
    for /f %%c in ("%%a") do set pguid_!pcnt!=%%c
)
echo.
set /a np=!cp!%%!pcnt!+1
for /l %%d in (!cp!,1,!cp!) do echo Old power plan = "!pname_%%d!" [GUID = !pguid_%%d!]
echo.
for /l %%e in (!np!,1,!np!) do powercfg -s !pguid_%%e! && echo New power plan = "!pname_%%e!" [GUID = !pguid_%%e!]

Если вы вызываете их с помощью ярлыка и хотите увидеть результат, просто добавьте команду pause в конце. Они хорошо работают на Windows 7 x64, но дайте мне знать, если у вас есть проблемы с ними.

(О, и на всякий случай, если вы не слишком знакомы с пакетными файлами, просто скопируйте + вставьте код в Блокнот и сохраните как "PowerPlanAlter.bat" и "PowerPlanCycle.bat" соответственно, с кавычками.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .