Как перевести компьютер в режим сна из командной строки / меню «Выполнить»?

144

Я знаю, что почти все в Windows, например, открытие любого приложения, можно выполнить из командной строки или из меню « Выполнить» .

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

Lazer
источник
Введите shutdown в командной строке и посмотрите на результаты работы на XP и выше из того, что я могу сказать.
user10547 16.09.09
Похожие страницы
Наюки

Ответы:

128

Вы найдете, shutdown.exeчтобы быть вашим другом.

Другие удобные команды смотрите в этом посте:

Спящий компьютер (подробнее на https://superuser.com/a/463652/249349 )

Блокировка рабочей станции

Спящий компьютер

see answers by Scott Chamberlain and Eric L

Перезапустить компьютер

Shutdown.exe -r -t 00

Выключить компьютер

Shutdown.exe -s -t 00

EDIT / UPDATE:

Кажется, что спать на компьютере проблематично, если включен режим гибернации.

Копирование из других ответов:

Вы можете попробовать PsShutdown или:

Команда rundll32.exe powrprof.dll, SetSuspendState 0,1,0 для спящего режима верна - однако она будет переходить в спящий режим вместо спящего, если вы не отключите спящий режим.

Вот как это сделать:

Перейдите в меню «Пуск» и откройте командную строку с повышенными правами, введя cmd.exe, щелкнув правой кнопкой мыши и выбрав «Запуск от имени администратора». Введите следующую команду:

powercfg -hibernate off
brandstaetter
источник
21
Проблема в rundll32.exe powrprof.dll,SetSuspendState 0,1,0том, что ОНО НЕ РАБОТАЕТ, как должно. SetSuspendStateпереведет компьютер в некий гибридный режим сна / гибернации. Когда вы используете кнопку «Режим сна» в меню «Пуск», вы можете вывести компьютер из режима сна, нажав любую клавишу на клавиатуре. Используя эту командную строку, make возобновляется намного медленнее из-за более глубокого состояния сна, и он может возобновиться, только если вы нажмете кнопку питания на вашем компьютере. Он не может возобновиться после нажатия клавиши. Итак ... как заставить его спать, как в обычном режиме ожидания, - возобновить нажатием клавиши?
Корпоративный Компьютерщик
6
Отрицательные голоса не являются ни малейшим оправданием. Ваш ответ не решает вопрос самостоятельно. Читатели должны иметь возможность собрать достаточно полезной информации из ответа, чтобы решить проблему, не переходя по ссылкам на другие сайты, которые могут быть сломаны или мертвы.
Иззи
5
Отказался в том, что не ответил на заданный вопрос: даже на связанной странице описанный метод перевода машины в спящий режим не будет работать, если включен режим гибернации.
Аккурсер
4
Я также протестировал команду Sleep и также могу подтвердить, что она не работает так, как задумано. Это не имеет ничего общего с ненавистью / троллингом, но если эта команда не работает, то вопрос остается без ответа, так как это было основной частью вопроса.
reSPAWNed
6
rundll32не должен использоваться для вызова, SetSuspendStateпотому что его подпись не соответствует ожидаемой rundll32. См: support.microsoft.com/en-us/kb/164787 и msdn.microsoft.com/en-us/library/windows/desktop/... Первый параметр получает мусор вместо FALSE значения. Это причина, почему он зимует вместо того, чтобы идти спать.
SergeyT
86

Методы, опубликованные другими людьми, работают некорректно, если на компьютере включен режим гибернации, компьютер не будет активирован на клавиатуре или, что более важно, не активируется на запланированном задании.

Одним из инструментов Sysinternals Microsoft является PsShutdown с помощью команды psshutdown -d -t 0он будет правильно спать, не спящий режим , компьютер

Скотт Чемберлен
источник
Требуется повышение
прав
3
У меня работает в Windows 10 x64, сборка 1709.
Ханс Локен,
1
У меня работает в Win10x64 версии 1709, запустите cmd с учетной записью администратора, но без run as administratorопции правого клика
Виктор Карлсон
3
У меня работает с Windows 10 (даже не с правами администратора).
DAB
3
Работает в Windows 10 x64 Build 15063. Нужно скачать PsTools и скопировать psshutdown.exeиз архива, например C:\Windows\System32, чтобы можно было использовать команду без pathprefix. Затем необходимо выполнить psshutdown -d -t 0с правами администратора для приостановки. Это должен быть принятый ответ , потому что он отвечает на вопрос, даже если не с предустановленными средствами Windows.
Arch Linux Tux
19

rundll32.exe powrprof.dll,SetSuspendState 0,1,0Правильная команда для сна верна - однако она будет переходить в спящий режим вместо сна, если вы не выключите спящий режим.

Вот как это сделать:

Перейдите в меню «Пуск» и откройте командную строку с повышенными cmd.exeправами. Для этого введите правой кнопкой мыши и выберите « Запуск от имени администратора» . Введите следующую команду:

powercfg -hibernate off
багор
источник
5
Я думаю, что это первый ответ, который на самом деле решает это. Я поместил эти две строки (-hibernate off first) и создал командный файл, который переводит компьютер в спящий режим. Одна из проблем заключается в том, что он по существу отключает спящий режим, а это не то, что я хотел, поэтому, чтобы исправить это, я добавил запланированное задание, запущенное при «разблокировке рабочей станции», чтобы снова включить спящий режим с помощью пакета, единственная строка которого - «. powercfg -hibernate off ". Затем я настроил короткий ключ для первого командного файла. Готово. Работает как шарм, спасибо!
Аккурсер
Это так странно. Спящий режим должен быть отключен, прежде чем вы сможете нормально спать? Есть ли название гибридный спящий режим / ждущий режим powrprof.dll, когда спящий режим включен? Просто хочу знать. Это относится к любому из состояний ACPI?
Этеш Чоудхури
4
rundll32не должен использоваться для вызова, SetSuspendStateпотому что его подпись не соответствует ожидаемой rundll32. См: support.microsoft.com/en-us/kb/164787 и msdn.microsoft.com/en-us/library/windows/desktop/... Первый параметр получает мусор вместо FALSE. Это причина, почему он зимует вместо того, чтобы идти спать.
SergeyT
Не работает под Windows 10
T3rm1
@EhteshChoudhury, проблема в этом случае заключается в том, что параметры Rundll32 являются неправильными и полностью неподходящими, поэтому они фактически вызывают SetSuspendState с параметрами: Hibernate: TRUE, ForceCritical: TRUE, DisableWakeEvents: TRUE. Последний бит объясняет, почему вы не можете разбудить ПК ни с чем, кроме кнопки питания. Это всего лишь совпадение, что попытка спящего режима, когда он отключен, приведет к тому, что ваш компьютер перейдет в спящий режим в Win7, и, вероятно, почему он не работает для некоторых людей.
SilverbackNet
10

NirCmd работает в Windows 8 (я полагаю, что это также работает и в Windows 7) → http://www.nirsoft.net/utils/nircmd.html
Команда есть standby, но она переводит компьютер в спящий режим.

nircmd.exe standby

Если у вас включен гибридный сон, он будет работать; т.е. он переводит компьютер в спящий режим и копирует память на диск в случае потери питания.

Эрик Л
источник
1
Это работает без необходимости повышения до администратора. Работает с или без спящего режима. Работает, как и ожидалось, с гибридным сном. Хорошее решение для Win10.
17
3

Посмотрите бесплатную утилиту Wizmo , которая может делать очень много вещей.
Вероятно, вы ищете команду:

Wizmo Standby

harrymc
источник
1
У Wizmo та же проблема, что и rundll32.exe powrprof.dll,SetSuspendState 0,1,0- он переводит компьютер в спящий режим, а не в спящий режим
Andomar
2
Нет, начиная с Vista, он фактически переводит компьютер в гибридный режим сна . Если вы этого не хотите, выключите гибридный сон .
harrymc
1
Wizmo затемнение работало в Windows 8.1, 10. БОЛЬШОЙ !!!!!!!!!!!!!
YumYumYum
Wizmo отлично работает. К сожалению, мой корпоративный антивирусный сканер удаляет его, так как он содержит некоторые последовательности, которые заставляют mcafee думать, что он содержит троян .
Бастиан
@bastian: Mcafee всегда был плохой новостью для автора приложений (из личного опыта).
harrymc
3

Я создал ярлык для rundll32.exe powrprof.dll,SetSuspendState 0,1,0(также пробовал с 0,0,0), но запуск ярлыка, похоже, перевел мой компьютер в спящий режим. Я не мог разбудить ПК с помощью клавиатуры; Пришлось нажимать кнопку включения, и на ПК показывались сообщения системной платы и т. Д.

Прочитав документ Windows API , я создал очень простую программу, набрав всего 3 строки. Я загрузил исполняемый файл, скомпилированный на эту страницу (нажмите «SleepTest.exe») , но через некоторое время этот файл может быть удален (это бесплатный сайт для размещения файлов, который я только что нашел при быстром поиске в Google).

Если вы не доверяете мне (что вполне нормально) или файл был удален, вы, конечно, можете скомпилировать код самостоятельно. Вам необходимо добавить «PowrProf.lib» к дополнительным зависимостям компоновщика.

#include "stdafx.h"
#include "windows.h" <-- Added this to make it work on Windows.
#include "PowrProf.h" <-- Added this to use the sleep function.

int main()
{
    SetSuspendState(FALSE, FALSE, FALSE); <-- Added this actual call.
    return 0;
}

rundll32.exe powrprof.dll,SetSuspendState 0,1,0кажется, делает то же самое, но каким-то образом вышеприведенная программа не переводит компьютер в спящий режим. Я мог мгновенно разбудить компьютер (без сообщений на материнской плате и т. Д.), Нажав любую клавишу на клавиатуре.

Чертовски овощи
источник
2

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

%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState

Если на вашем компьютере разрешен режим гибернации, то приведенная выше команда инициирует режим гибернации. Если функция гибернации отключена, то она перейдет в режим ожидания. Как другие пользователи ответили ранее, shutdown.exe /?предоставит множество вариантов выключения.

BlueDevil
источник
1
rundll32не должен использоваться для вызова, SetSuspendStateпотому что его подпись не соответствует ожидаемой rundll32. См: support.microsoft.com/en-us/kb/164787 и msdn.microsoft.com/en-us/library/windows/desktop/... Первый параметр получает мусор вместо FALSE, так что он всегда зимует вместо того , чтобы идти к спать.
SergeyT
1

Сначала необходимо отключить Hibernate в Windows, а затем перевести компьютер в состояние сна . Используйте следующие две команды:

powercfg -hibernate off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

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

powercfg -hibernate on
rundll32.exe powrprof.dll,SetSuspendState Hibernate
Мохсен Абаси
источник
3
rundll32не предназначен для вызова SetSuspendStateи не должен использоваться для этого. Первый параметр получает мусор вместо правильного значения. Поэтому он всегда спит, а не засыпает (если вы вообще не отключили спящий режим).
SergeyT
@SergeyT Мне кажется, это работает (после отключения гибернации); Вы говорите, что это повредит окна?
лунат
Он повреждает стек (так как rundll32 ожидает другую сигнатуру вызова, поэтому он выталкивает из стека вещи, которые на самом деле не были помещены туда). Это приводит к неожиданному поведению.
Имоатама
@imoatama хорошая находка ...
masterxilo
1

Вот статья об использовании CLI для выключения.

Microsoft предоставляет PsTools, который дает вам отключение CLI вместе с другими полезными инструментами. Вы можете получить это здесь .

пангасиус
источник
1

у меня работает только QUICK SLEEPER (работает в Windows 7,8,10).

Исходный код PS доступен здесь .

T.Todua
источник
1
Есть ли вероятность, что вы можете предоставить ссылку на сайт, с которого вы получили файл? Прямая ссылка на загружаемый файл, особенно при использовании сокращающего URL-адреса, может сделать файл особенно подозрительным, поскольку он часто используется разработчиками вредоносных программ.
Мокубай
Хорошо, я обновил ссылку на официальный сайт.
Т.Тодуа
1

Если у вас есть Python (с pywin32), вы также можете вызвать эту функцию SetSuspendState напрямую с помощью:

import ctypes
ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)

Это может быть легко помещено в пакетный файл или ярлык вроде:

pythonw -c "import ctypes; ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)"

Итак, если у вас нет файлов .py, связанных с переводчиком, вы можете просто дважды щелкнуть ссылку.

штрих-кот-бэнг
источник
1

Отключение части вопроса понятно для всех.
shutdown.exe /?показывает все варианты выключения / перезапуска / дополнительные параметры загрузки / прошивки загрузки.

Но я вижу столько ударов вокруг сна.
Все получают это, что rundll32.exeне должно использоваться для вызова случайных функций, и это просто работает здесь для спящего полностью по стечению обстоятельств. Но такова природа Windows - черный ящик, в котором люди ковырялись и нашли сотни обходных путей для выполнения своей работы (кричали в восторге).

Есть так много « правильных » решений, предлагающих внешние инструменты , но я не могу найти нативный (гибридный / pinvoke / любой) пакетный скрипт , даже если этот вопрос оставался активным на протяжении многих лет.
Итак, вот мой простой power_sleep.bat :

@echo off &mode 32,2 &color cf &title Power Sleep
set "s1=$m='[DllImport ("Powrprof.dll", SetLastError = true)]"
set "s2=static extern bool SetSuspendState(bool hibernate, bool forceCritical, bool disableWakeEvent);"
set "s3=public static void PowerSleep(){ SetSuspendState(false, false, false); }';"
set "s4=add-type -name Import -member $m -namespace Dll; [Dll.Import]::PowerSleep();"
set "ps_powersleep=%s1%%s2%%s3%%s4%" 
call powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Bypass -Command "%ps_powersleep:"=\"%"
exit

Это даже работает как большая однострочная команда:

powershell.exe -C "$m='[DllImport(\"Powrprof.dll\",SetLastError=true)]static extern bool SetSuspendState(bool hibernate,bool forceCritical,bool disableWakeEvent);public static void PowerSleep(){SetSuspendState(false,false,false); }';add-type -name Import -member $m -namespace Dll; [Dll.Import]::PowerSleep();"
AveYo
источник