Как отключить спящий режим через CMD?

10

Можно ли отключить спящий режим при закрытии крышки ноутбука только с помощью командной строки?

kb67
источник
1
Из любопытства, это чисто теоретический вопрос или есть какая-то конкретная причина, по которой вам нужно это сделать? Я спрашиваю, потому что могут быть другие способы сделать это, если это так.
Shinrai
Ну, мне нужно сделать это удаленно, и у меня есть только доступ к командной строке ноутбука.
kb67
1
Не проще ли пройти через пользователя ноутбука? Я думаю, что комментарии iglvzx верны, и нет никакого способа легко изменить действие крышки, за исключением ручного редактирования реестра.
Shinrai
Что ж, я ошибся, есть способ сделать это с помощью powercfg, но я думаю, что он достаточно сложен, так что все еще может быть проще просто обсудить его.
Shinrai

Ответы:

13

Команда, которую вы ищете, - powercfg. Откройте командную строку и введитеpowercfg –q >poweroptions.txt

Это создаст текстовый файл (poweroptions.txt) со всеми GUID для настроек питания. Откройте файл poweroptions.txt и найдите GUID для текущей схемы питания. Это должно быть в самом верху файла и будет выглядеть так:

Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (Balanced)

Скопируйте и вставьте только GUID (в этом примере - 381b4222-f694-41f0-9685-ff5bb260df2e) в новый пустой текстовый файл. Затем прокрутите и найдите GUID подгруппы для действий «Кнопки питания и крышка». Скопируйте и вставьте этот GUID в тот же новый текстовый файл отдельной строкой. Теперь найдите GUID настройки электропитания для «действия по закрытию крышки» и скопируйте и вставьте один под двумя другими. Обратите также внимание на цифры «Возможная установка индекса» для опции, которую вы хотите установить (отключено 000). Вам придется выполнить команду один раз для каждой схемы питания, постоянного и переменного тока, чтобы охватить обе ситуации. Команда будет выглядеть так:

Powercfg –SETACVALUEINDEX [put power scheme GUID here] [put subgroup GUID here] [put power setting GUID here] 000

Я проверил это, и моя команда выглядит так:

powercfg -SETACVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 000

Вторая команда предназначена для тех случаев, когда пользователь работает от батареи и точно такой же, за исключением того, что мы используем переключатель –SETDCVALUEINDEX.

Вот официальная страница параметров командной строки Powercfg от Microsoft для дальнейшего использования.

dwolters
источник
Привет, Дэвид. Я рад видеть, что в Microsoft есть люди, которые работают на таких сайтах, это обнадеживает. Не обязательно подписывать свои посты на каком-либо сайте Stack Exchange, хотя и не рекомендуется - это то, для чего предназначен ваш значок пользователя.
Shinrai
Shrinrai, Извините, я посещаю так много разных форумов каждый день, что сложно поддерживать все функции прямо. Я посмотрю на мой значок пользователя.
Двортерс
1
powercfgкажется хорошим примером того, «как не писать инструмент командной строки»: /
Мартин фон Виттих
7

Тема здесь Как отключить спящий режим через CMD?

Предполагая, что вы настроили крышку ноутбука, чтобы она ничего не делала в закрытом состоянии:

powercfg -x -standby-timeout-ac 0

(почему-то у меня не работает ключ -x , поэтому я изменил его на / x, и он работает. Остальные ключи остаются -standby-timeout-ac )

Как показано на странице Microsoft Technet «Параметры командной строки Powercfg» ( https://technet.microsoft.com/en-us/library/cc748940(v=ws.10).aspx ), команда выглядит так:

> Значение параметра powercfg -x (значение, которое вы смотрите, это «режим ожидания»)

следовательно: > powercfg -x -standby-timeout-ac минут (отключить = 0 минут)

ПРИМЕЧАНИЕ: ac = подключен к электросети / dc = работает от батареи (поэтому, если вы хотите отключить спящий режим во время работы от батареи, замените «ac» на «dc» в команде, чтобы она выглядела так powercfg -x -standby-timeout-dc 0)

wikilon
источник
1
Это работает на Win 7 и Win 10, спасибо! Единственное требование - запустить CMD от имени администратора.
TPAKTOPA
1
Проблема -xможет заключаться в том, что это была полная черта, а не обычный отрицательный символ.
Джоэл Коухорн
2

Основываясь на предыдущем ответе, я написал командный файл.

@echo off

for /f "tokens=4 delims= " %%i IN ('powercfg -q ^| find "Power Scheme GUID:"') do Set StrOne=%%i
for /f "tokens=3 delims= " %%i IN ('powercfg -q ^| find "(Power buttons and lid)"') do Set StrTwo=%%i 
for /f "tokens=4 delims= " %%i IN ('powercfg -q ^| find "(Lid close action)"') do Set StrThree=%%i 

powercfg -SETACVALUEINDEX %StrOne% %StrTwo% %StrThree% 000

Вам нужно изменить %% i на% i, если вы пытаетесь запустить эти команды непосредственно в командной строке (за пределами пакета).

Джереми
источник
1

Основываясь на сценарии Джереми и Джонаса Хердика, я написал этот сценарий переключения, который не зависит от локализации (также работает с немецкими окнами) и помогает мне отключить и восстановить (до того, что было раньше) действие закрытия крышки при установке моего ноутбук к док-станции (где крышка должна быть закрыта). И да, не забывайте повторно активировать текущую энергетическую схему после каждого изменения, как упомянуто KallePower

@echo off
setlocal enabledelayedexpansion
for /f "tokens=2 delims=:(" %%i in ('powercfg /GETACTIVESCHEME') do set ACTIVESCHEME=%%i
for /f "tokens=2 delims=:(" %%i in ('powercfg -q %ACTIVESCHEME% SUB_BUTTONS LIDACTION ^| findstr "[0-9a-z]*-[0-9a-z]*-[0-9a-z]*-[0-9a-z]*-[0-9a-z]*"') do set FULLPATH=!FULLPATH! %%i
for /f "tokens=2 delims=:(" %%i in ('powercfg /q %FULLPATH% ^| findstr "[0-9]x[0-9]*"') do (
    set CURRENTSETTINGAC=!CURRENTSETTINGDC!
    set CURRENTSETTINGDC=%%i
)
set CURRENTSETTINGAC=%CURRENTSETTINGAC:~-1%
set CURRENTSETTINGDC=%CURRENTSETTINGDC:~-1%
powercfg -SETACVALUEINDEX %FULLPATH% 0
powercfg -SETDCVALUEINDEX %FULLPATH% 0
powercfg /s %ACTIVESCHEME%
pause
powercfg -SETACVALUEINDEX %FULLPATH% %CURRENTSETTINGAC%
powercfg -SETDCVALUEINDEX %FULLPATH% %CURRENTSETTINGDC%
powercfg /s %ACTIVESCHEME%
sc911
источник
1
REM Disabling all Sleep Parameters

@echo off

powercfg /x -hibernate-timeout-ac 0

powercfg /x -hibernate-timeout-dc 0

powercfg /x -disk-timeout-ac 0

powercfg /x -disk-timeout-dc 0

powercfg /x -monitor-timeout-ac 0

powercfg /x -monitor-timeout-dc 0

Powercfg /x -standby-timeout-ac 0

powercfg /x -standby-timeout-dc 0

Pause
Mizuki
источник
0

У Microsoft есть длинная страница о параметрах powercfgкомандной строки.

Вы, вероятно, будете читать на -xкоммутаторе. Я только использовал, powercfgчтобы изменить настройки гибернации, хотя.


источник
1
powercfgне имеет никаких вариантов для изменения lid close action. Опции питания хранятся в Реестре, HKEY_CURRENT_USER\Control Panel\PowerCfg\GlobalPowerPolicyно неясно, какие значения в двоичных данных соответствуют каким настройкам.
iglvzx
Спасибо за ответ. Я был не уверен, но я рад, что связался с тем же местом, что и Дэвид :-)
0

Еще кое-что. Не забудьте добавить «powercfg -S% StrOne%» в конце скрипта, чтобы активировать настройки. Остальные настройки будут просто установлены, но не будут сохранены / активированы.

KallePower
источник
0

Попробуйте NoDoz . После установки вы можете запустить nodozиз командной строки cmd (или терминала PowerShell), чтобы система не спала бесконечно. Или вы можете передать параметр тайм-аута, например, -t 6h13mчтобы программа автоматически заканчивалась через произвольное время.

Ник Шпрайцер
источник