Як я можу перевести комп'ютер у режим сну з меню командних рядків / запуску?


144

Я знаю, що майже все в Windows, як і відкриття будь-якої програми, можна зробити з командного рядка або з меню « Запустити ».

Як можна перевести комп'ютер у режим сну або вимкнути його ? Яка команда для цього?


Введіть вимкнення в командному рядку та подивіться на результати роботи на XP та вище з того, що я можу сказати.
користувач10547

Відповіді:


128

Ви знайдете shutdown.exeсвого друга.

Інші зручні команди дивіться цю публікацію:

Сонний комп’ютер (детальніше читайте на https://superuser.com/a/463652/249349 )

Блокування робочої станції

Hibernate Computer

see answers by Scott Chamberlain and Eric L

Перезавантажте комп'ютер

Shutdown.exe -r -t 00

Комп'ютер відключення

Shutdown.exe -s -t 00

Редагування / оновлення:

Здається, що спати за комп’ютером проблематично, якщо сплячий режим увімкнено.

Копіювання з інших відповідей:

Ви можете спробувати PsShutdown або:

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

Ось як це зробити:

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

powercfg -hibernate off

21
Проблема в rundll32.exe powrprof.dll,SetSuspendState 0,1,0тому, що вона НЕ ПРАЦЮЄ як слід. SetSuspendStateпереведе комп'ютер у своєрідний гібридний режим сну / сну. Використовуючи кнопку "Сон" у меню "Пуск", ви можете відновити комп'ютер зі сну, натиснувши будь-яку клавішу на клавіатурі. Використовуючи цей командний рядок, функція поновлюється набагато повільніше через стан глибокого сну, і він може відновитись лише при натисканні кнопки живлення на комп’ютері. Він не може відновитись при натисканні клавіші. Отже ... як ви змусите його спати, як у звичайному режимі очікування - відновлення натискання клавіші?
Корпоративний Geek

6
Повноцінні відгуки не є в крайній мірі необґрунтованими. Ваша відповідь не вирішує питання самостійно. Читачі повинні мати можливість зібрати достатньо корисної інформації з відповіді, щоб вирішити проблему, не звертаючись до будь-яких посилань на інші веб-сайти, які можуть стати зламаними або загиблими.
Іссі

5
Запропоновано не відповідати на поставлене запитання: навіть на пов’язаній сторінці описаний спосіб переходу машини у режим сну не працюватиме, коли активовано сплячий режим.
akurtser

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

Способи, розміщені іншими людьми, не працюють належним чином, якщо на комп’ютері увімкнено сплячку, комп'ютер не прокинеться на клавіатурі або, що ще важливіше, не прокинеться за запланованим завданням.

Один із інструментів Microsoft Sysinternals - це PsShutdown, використовуючи команду, psshutdown -d -t 0він правильно спить, а не перебуває в сплячку , комп’ютером.


Потрібен підйом до адміністратора
dsmtoday

3
Для мене працює у Windows 10 x64, збірка 1709.
Ганс Лёкен

1
Працює для мене у програмі Win10x64 версії 1709, запускайте cmd з обліковим записом адміністратора, але без run as administratorопції клацання правою кнопкою миші
Віктор Карлсон

3
Для мене працює з Windows 10 (навіть не як адміністратор).
ДАБ

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
Я думаю, що це перша відповідь, яка насправді її вирішує. Я поставив ці два рядки (спочатку перемкнув) і зробив пакетний файл, який переводить ПК у режим сну. Одна з проблем полягає в тому, що вона фактично вимикає сплячку, що не є тим, чого я хотів, тому, щоб виправити це, я додав планове завдання, запущене "на розблокуванні робочої станції", щоб повернути сплячку назад з партією, єдиною лінією якої є " powercfg -гібернато вимкнено ". Потім я сконфігурував коротку клавішу для першого пакетного файлу. Зроблено. Працює як шарм, дякую!
akurtser

Це так дивно. Перед тим, як ви змогли нормально заснути, потрібно вимкнути сплячку? Чи існує назва гібридного стану сну / призупинення powrprof.dll, коли сплячий режим увімкнено? Просто хочу знати. Чи це стосується будь-якого із станів АКТІ?
Ehtesh Choudhury

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.
dsmtoday

3

Дивіться безкоштовну утиліту Wizmo , яка може зробити дуже багато речей.
Команда, яку ви шукаєте, ймовірно:

режим очікування


1
У Wizmo є така ж проблема, як rundll32.exe powrprof.dll,SetSuspendState 0,1,0- він переводить комп'ютер у сплячку, а не у сон
Andomar

2
Ні, оскільки Vista фактично переводить комп'ютер у гібридний сон . Якщо ви цього не хочете, вимкніть гібридний сон .
harrymc

1
wizmo blackout працював у 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" до додаткових залежностей Linker.

#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
rundll32не слід використовувати для виклику, SetSuspendStateоскільки його підпис не відповідає тому, що очікується rundll32. Дивіться: support.microsoft.com/en-us/kb/164787 та msdn.microsoft.com/en-us/library/windows/desktop/… Перший параметр отримує сміття замість FALSE, тому він завжди зимує замість того, щоб їхати спати.
SergeyT

1

Спочатку потрібно вимкнути сплячий режим у вікнах, а потім перевести комп'ютер у стан сну . Використовуйте наступні дві команди:

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 Здається, це працює для мене (після відключення сплячки); Ви кажете, що це пошкодить вікна?
moondra

Він пошкоджує стек (оскільки rundll32 очікує іншого підпису виклику, тому він вискакує ті речі, які насправді не були поміщені туди). Це призводить до несподіваної поведінки.
imoatama

@imoatama приємна знахідка ...
masterxilo

1

Ось стаття про використання CLI для відключення.

Microsoft надає PsTools, який дає змогу відключити CLI разом з іншими корисними інструментами. Ви можете отримати це тут .


1

для мене працює лише QUICK SLEEPER (працює в Windows 7,8,10).

Тут доступний вихідний код ps .


1
Чи є шанс надати посилання на фактичний сайт, з якого ви отримали файл? Посилання безпосередньо на файл для завантаження, особливо при використанні скорочувача URL-адрес ga, може зробити цей файл особливо підозрілим, оскільки це тактика, яку часто використовують письменники зловмисних програм.
Мокубай

ОК, я оновив посилання на офіційний сайт.
T.Todua

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 - чорна скринька, яку люди розігнали і знайшли сотні обхідних шляхів, щоб влаштуватися на роботу (кричати до досягнення).

Існує дуже багато " належних " рішень, що пропонують зовнішні інструменти , але я, здається, не можу знайти власний пакетний сценарій (гібрид / пінвоке / що завгодно) , навіть якщо це питання залишалося активним протягом багатьох років.
Ось ось мій простий 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();"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.