63

Я хочу перевести мой ПК с Windows (Windows 7) в спящее состояние через командную строку (чтобы я мог привязаться к кнопке макроса на клавиатуре).

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

Команда сна в меню выключения также работает.

большая часть информации, которую я нашел, говорит, чтобы использовать;

%windir%\system32\rundll32.exe PowrProf.dll, SetSuspendState 0,1,0

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

Итак, какую команду использовать, чтобы перевести компьютер в спящий режим (не в спящий режим)?

9 ответов9

72

Надеюсь, вы найдете это полезным.

Завершение работы %windir%\System32\shutdown.exe -s

Перезагрузите %windir%\System32\shutdown.exe -r

Выход из системы %windir%\System32\shutdown.exe -l

Резервный %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Standby

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

Предупреждение: rundll32.exe не должен использоваться для запуска powerprof.dll. Вместо этого вы должны вызвать SetSuspendState напрямую. Это можно сделать с помощью Powershell - создайте файл, например sleep.ps1, с указанным ниже содержимым.

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

Затем запустите его, используя powershell -File C:\your-path\sleep.ps1 . Сначала вам может потребоваться выполнить команду Set-ExecutionPolicy RemoteSigned чтобы включить выполнение сценариев PowerShell .

Приведенный выше скрипт вызывает приостановку системы, которая будет либо в спящем режиме, либо в режиме гибернации в зависимости от текущих настроек режима гибернации. Чтобы изменить этот параметр из командной строки, запустите powercfg -h off (или on) из командной строки от имени администратора.

15

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

Wizmo Standby

14

Вы можете создать файл с расширением .ps1 (powershell), например «sleep.ps1», и написать это:

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

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

$minutes = read-host "Enter minutes to wait until sleep";
$secs= 60*$minutes;
Start-sleep -s $secs

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

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

Вы можете запустить это из строки cmd, написав

powershell -File C:\your-path\sleep.ps1

Если вы никогда раньше не запускали сценарий PowerShell, вам нужно сначала запустить

Set-ExecutionPolicy RemoteSigned

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

13

Я нашел решение. Я установил бесплатную программу AutoHotKey и записал шаги для вызова меню «Пуск» -> «Режим сна» в файл сценария. Затем я собрал файл сценария в отдельный исполняемый файл SleepWin7.exe.

Теперь я просто запускаю SleepWin7.exe, чтобы перевести мой компьютер в гибридный режим сна.

Вы можете удалить AutoHotKey, если это все, что вам нужно.


Обновление: вышеуказанное решение не работает, когда пользователь не вошел в систему, то есть Windows 7 Login Screen. (Мой компьютер просыпается в 4 часа утра каждое воскресенье, чтобы выполнить еженедельное резервное копирование, которое выполняется без входа пользователя.) В таком случае программа Wizmo все еще работает:

wizmo.exe тихий режим ожидания!

11

С Sysinternals PsTools [ скачать ]:

psshutdown -d

используя инструмент командной строки PsShutdown.

(Вы можете предпочесть это решение, если вы уже загрузили PsTools, оно довольно широко используется. Кроме этого, этот подход эквивалентен использованию wizmo quiet standby .)

Источник: https://superuser.com/a/331545/21887

7

Я использую эту утилиту SLEEP.EXE в течение многих лет. Он работает хорошо, и вам не нужно помнить, какие аргументы выдавать для режима приостановки (его стандартная форма "сна").

6

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

powercfg -h off

теперь, rundll32 powrprof.dll, SetSuspendState переведет вашу станцию в режим ожидания.

[РЕДАКТИРОВАТЬ]

на самом деле я не могу настроить гибридный сон, потому что у меня есть ноутбук (состояние, которое недоступно на мобильных станциях), для гибридного сна вам нужно включить спящий режим, а некоторые говорят, что rundll32 powrprof.dll, SetSuspendState запускают сон по умолчанию режим в настройках панели управления \ управления питанием. Пожалуйста, попробуйте, если rundll32 powrprof.dll, SetSuspendState гибридного сна дать некоторые результаты.

5

Создайте файл bat, где 600 - задержка в секундах.

ping -n 600 -w 1 127.0.0.1> nul

powercfg -h выключен

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

4

Если вы компетентны в компиляции программы .NET, следующая команда сделает это

System.Windows.Forms.Application.SetSuspendState(PowerState.Suspend, 
                                                 false,   /* force */
                                                 true     /* disableWake */);

Примечание: вам не нужно отключать спящий режим, как того требует команда rundll32 powrprof.dll,SetSuspendState . Вы также можете использовать PowerState.Hibernate который будет переводить компьютер в спящий режим, если вы хотите.

С помощью этой команды вы можете легко скомпилировать EXE-файл с любой версией Visual Studio. Просто создайте консольное приложение и добавьте ссылку на System.Windows.Forms DLL.

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