139

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

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

12 ответов12

127

Вы найдете 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
80

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

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

19

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

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

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

powercfg -hibernate off
8

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

nircmd.exe standby

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

3

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

Wizmo Standby

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 /? предоставит много вариантов выключения.

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();"
1

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

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

1

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

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

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

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

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

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

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