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

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

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

13 ответов

Решение

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

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

Спящий компьютер (подробнее на /questions/622562/est-li-instrument-komandnoj-stroki-chtobyi-perevesti-windows-8-v-spyaschij-rezhi/622565#622565)

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

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

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

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

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

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

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

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

powercfg -hibernate off

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

nircmd.exe standby

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

Отключение части вопроса ясно для всех.
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();"

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

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

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

Я создал ярлык для 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 кажется, делает то же самое, но каким-то образом вышеприведенная программа не переводит компьютер в спящий режим. Я мог мгновенно разбудить компьютер (без сообщений на материнской плате и т. Д.), Нажав любую клавишу на клавиатуре.

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

Wizmo Standby

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

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

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

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

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

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

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

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

powercfg -hibernate on
rundll32.exe powrprof.dll,SetSuspendState Hibernate

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

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

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

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

В качестве однострочника PowerShell:

      (Add-Type -MemberDefinition "[DllImport(""powrprof.dll"")]`npublic static extern bool SetSuspendState(bool Hibernate, bool ForceCritical, bool DisableWakeEvent);" -Name "Win32SetSuspendState" -Namespace Win32Functions -PassThru)::SetSuspendState(0, 1, 0)

Команду можно запустить, например, с помощью Win+ R.

Чтобы просто отключить дисплей при включенном компьютере, см. https://superuser.com/a/1735341/155147 .

Другие вопросы по тегам