Jak mogę uśpić komputer z menu Wiersz polecenia / Uruchom?

144

Wiem, że prawie wszystko w systemie Windows, takie jak otwieranie dowolnej aplikacji, można wykonać z wiersza polecenia lub z menu Uruchom .

Jak mogę uśpić komputer lub go wyłączyć ? Jakie jest na to polecenie?

Lazer
źródło
Wpisz polecenie shutdown w wierszu polecenia i spójrz na dane wyjściowe działa na XP i powyżej z tego, co mogę powiedzieć.
user10547,

Odpowiedzi:

128

Przekonasz shutdown.exesię, że jesteś swoim przyjacielem.

Inne przydatne polecenia zobacz ten post:

Sleep Computer (czytaj więcej na https://superuser.com/a/463652/249349 )

Zablokuj stację roboczą

Hibernacja Komputer

see answers by Scott Chamberlain and Eric L

Restart komputera

Shutdown.exe -r -t 00

Wyłącz komputer

Shutdown.exe -s -t 00

EDYCJA / AKTUALIZACJA:

Wygląda na to, że spanie przy komputerze jest problematyczne, jeśli hibernacja jest włączona.

Kopiowanie z innych odpowiedzi:

Możesz wypróbować PsShutdown lub:

Polecenie rundll32.exe powrprof.dll, SetSuspendState 0,1,0 dla uśpienia jest poprawne - jednak hibernuje zamiast uśpienia, jeśli nie wyłączysz hibernacji.

Oto jak to zrobić:

Przejdź do menu Start i otwórz wiersz polecenia z podwyższonym poziomem uprawnień, wpisując cmd.exe, klikając prawym przyciskiem myszy i wybierając Uruchom jako administrator. Wpisz następujące polecenie:

powercfg -hibernate off
brandstaetter
źródło
21
Problem rundll32.exe powrprof.dll,SetSuspendState 0,1,0polega na tym, że TO NIE DZIAŁA tak, jak powinno. SetSuspendStatewprowadzi komputer w rodzaj hybrydowego trybu uśpienia / hibernacji. Gdy używasz przycisku Uśpij z menu Start, możesz wznowić komputer ze stanu uśpienia, naciskając dowolny klawisz na klawiaturze. Za pomocą tego wiersza polecenia program make jest wznawiany znacznie wolniej z powodu głębszego stanu uśpienia i można go wznowić tylko po naciśnięciu przycisku zasilania na komputerze. Nie można wznowić naciśnięcia klawisza. Więc ... jak sprawić, byś spał jak w normalnym trybie gotowości - można go wznowić po naciśnięciu klawisza?
Corporate Geek
6
Głosy negatywne nie są w żaden sposób nieuzasadnione. Twoja odpowiedź nie dotyczy samego pytania. Czytelnicy powinni być w stanie zebrać wystarczającą ilość przydatnych informacji z odpowiedzi, aby rozwiązać problem, bez konieczności podążania za linkami do innych stron, które mogą ulec uszkodzeniu lub przestać działać.
Iszi
5
Głosowałem za nie udzielenie odpowiedzi na zadane pytanie: nawet na stronie z linkami opisana metoda uśpienia maszyny nie będzie działać, gdy hibernacja jest włączona.
akurtser
4
Przetestowałem również polecenie Uśpienie i mogę również potwierdzić, że nie działa ono zgodnie z przeznaczeniem. Nie ma to nic wspólnego z nienawiścią / trollowaniem, ale jeśli to polecenie nie działa, to pytanie pozostaje bez odpowiedzi, ponieważ była to główna część pytania.
ODNOWIONO
6
rundll32nie powinien być używany do dzwonienia, SetSuspendStateponieważ jego podpis nie pasuje do tego, którego oczekuje rundll32. Patrz: support.microsoft.com/en-us/kb/164787 i msdn.microsoft.com/en-us/library/windows/desktop/… Pierwszy parametr otrzymuje śmieci zamiast wartości FAŁSZ. To jest powód, dla którego hibernuje zamiast iść spać.
SergeyT
86

Metody opublikowane przez inne osoby nie działają poprawnie, jeśli komputer ma włączoną hibernację, komputer nie obudzi się na klawiaturze lub, co ważniejsze, nie obudzi się w zaplanowanym zadaniu.

Jednym z narzędzi Sysinternals Microsoftu jest PsShutdown przy użyciu polecenia psshutdown -d -t 0, aby poprawnie spał, a nie hibernował komputer

Scott Chamberlain
źródło
Wymaga podniesienia
uprawnień
3
Działa dla mnie w systemie Windows 10 x64, kompilacja 1709.
Hans Løken,
1
Działa dla mnie w wersji Win10x64 1709, uruchom cmd z kontem administratora, ale bez run as administratoropcji kliknięcia prawym przyciskiem
Viktor Carlson
3
Działa dla mnie z Windows 10 (nawet jako administrator).
DAB
3
Działa w Windows 10 x64 Build 15063. Trzeba pobrać PsTools i skopiować psshutdown.exez archiwum np. C:\Windows\System32Aby móc użyć polecenia bez prefiksu ścieżki. Następnie należy wykonać psshutdown -d -t 0z uprawnieniami administratora w celu zawieszenia. To powinna być zaakceptowana odpowiedź , ponieważ odpowiada na pytanie, nawet jeśli nie jest to z narzędziami z preinstalowanym systemem Windows.
Arch Linux Tux,
19

Polecenie rundll32.exe powrprof.dll,SetSuspendState 0,1,0uśpienia jest poprawne - jednak zamiast hibernacji przejdzie w stan hibernacji zamiast uśpienia.

Oto jak to zrobić:

Przejdź do menu Start i otwórz wiersz polecenia z podwyższonym poziomem cmd.exeuprawnień, wpisując , klikając prawym przyciskiem myszy i wybierając Uruchom jako administrator . Wpisz następujące polecenie:

powercfg -hibernate off
Gafel
źródło
5
Myślę, że to pierwsza odpowiedź, która ją rozwiązuje. Umieściłem te dwie linie (najpierw wyłączono -hibernate) i utworzyłem plik wsadowy, który uśpił komputer. Jednym z problemów jest to, że zasadniczo wyłącza hibernację, co nie jest tym, czego chciałem, więc aby to naprawić, dodałem zaplanowane zadanie uruchamiane „na odblokowaniu stacji roboczej”, aby włączyć hibernację z partii, której jedyną linią jest „ powercfg -hibernate off ". Następnie skonfigurowałem krótki klucz dla pierwszego pliku wsadowego. Gotowy. Działa jak urok, dziękuję!
akurtser
To takie dziwne. Hibernacja musi być wyłączona, zanim będziesz mógł prawidłowo spać? Czy istnieje nazwa hybrydowego stanu uśpienia / zawieszenia, powrprof.dllgdy hibernacja jest włączona? Po prostu chcę wiedzieć. Czy odnosi się do któregokolwiek z stanów ACPI?
Ehtesh Choudhury,
4
rundll32nie powinien być używany do dzwonienia, SetSuspendStateponieważ jego podpis nie pasuje do tego, którego oczekuje rundll32. Patrz: support.microsoft.com/en-us/kb/164787 i msdn.microsoft.com/en-us/library/windows/desktop/… Pierwszy parametr otrzymuje śmieci zamiast FAŁSZ. To jest powód, dla którego hibernuje zamiast iść spać.
SergeyT
Nie działa pod Windows 10
T3rm1
@EhteshChoudhury, problemem w tym przypadku jest to, że parametry Rundll32 są niepoprawne i całkowicie nieodpowiednie, tak że faktycznie wywołują SetSuspendState z parametrami: Hibernacja: PRAWDA, ForceCritical: PRAWDA, DisableWakeEvent: PRAWDA. Ostatni fragment wyjaśnia, dlaczego nie można obudzić komputera za pomocą przycisku zasilania. To tylko zbieg okoliczności, że próba hibernacji po wyłączeniu spowoduje uśpienie komputera w Win7 i prawdopodobnie dlaczego nie działa u niektórych osób.
SilverbackNet,
10

NirCmd działa w systemie Windows 8 (zakładam, że działa również z Windows 7) → http://www.nirsoft.net/utils/nircmd.html
Polecenie jest standby, ale powoduje uśpienie komputera.

nircmd.exe standby

Jeśli masz włączony tryb hybrydowy, będzie działał; oznacza to, że komputer przechodzi w tryb uśpienia i kopiuje pamięć na dysk w przypadku utraty zasilania.

Eric L.
źródło
1
Działa to bez konieczności przechodzenia do Administratora. Działa z włączoną hibernacją lub bez niej. Działa zgodnie z oczekiwaniami w przypadku snu hybrydowego. Ładne rozwiązanie dla Win10.
dsmtoday
3

Zobacz bezpłatne narzędzie Wizmo , które potrafi wiele rzeczy.
Polecenie, którego szukasz, to prawdopodobnie:

wizmo standby

harrymc
źródło
1
Wizmo ma ten sam problem co rundll32.exe powrprof.dll,SetSuspendState 0,1,0- wprowadza komputer w stan hibernacji, a nie w sen
Andomar
2
Nie, odkąd Vista faktycznie wprowadza komputer w tryb uśpienia hybrydowego . Jeśli nie chcesz tego, wyłącz tryb uśpienia hybrydowego .
harrymc,
1
blackizm wizmo działał w Windows 8.1, 10. WIELKI !!!!!!!!!!!!!
YumYumYum
Wizmo działa świetnie. Niestety mój skaner antywirusowy usuwa go, ponieważ zawiera sekwencje, które sprawiają, że mcafee uważa, że zawiera trojana .
Bastian
@ Bastian: Mcafee był zawsze złą wiadomością dla autora aplikacji (z własnego doświadczenia).
harrymc
3

Utworzyłem skrót do rundll32.exe powrprof.dll,SetSuspendState 0,1,0(próbowałem również z 0,0,0), ale uruchomienie skrótu sprawiło, że mój komputer przeszedł w stan hibernacji. Nie mogłem obudzić komputera za pomocą klawiatury; Musiałem nacisnąć przycisk zasilania, a komputer pokazał wiadomości na płycie głównej itp.

Po przeczytaniu dokumentu API systemu Windows stworzyłem bardzo prosty program z zaledwie 3 wierszami pisania. Przesłałem plik wykonywalny skompilowany na tę stronę (kliknij plik „SleepTest.exe”) , ale ten plik może zostać po pewnym czasie usunięty (jest to darmowa witryna hostingowa plików, którą właśnie znalazłem przez szybkie wyszukiwanie w Google).

Jeśli mi nie ufasz (co jest całkowicie w porządku) lub plik został usunięty, możesz samodzielnie skompilować kod. Musisz dodać „PowrProf.lib” do dodatkowych zależności Linkera.

#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,0wydaje się, że robi to samo, ale jakoś powyższy program nie wprowadził komputera w stan hibernacji. Mogłem natychmiast obudzić komputer (bez wiadomości na płycie głównej itp.), Naciskając dowolny klawisz na klawiaturze.

Cholerne warzywa
źródło
2

Możesz zainicjować opcje zawieszenia lub hibernacji z wiersza poleceń, jak określono poniżej i do którego odwołuje się ten artykuł .

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

Jeśli komputer jest ustawiony na zezwalanie na hibernację, powyższe polecenie zainicjuje hibernację. Jeśli funkcja hibernacji jest wyłączona, przejdzie w stan gotowości. Jak inni użytkownicy odpowiedzieli wcześniej, shutdown.exe /?zapewni wiele opcji zamykania.

Niebieski Diabeł
źródło
1
rundll32nie powinien być używany do dzwonienia, SetSuspendStateponieważ jego podpis nie pasuje do tego, którego oczekuje rundll32. Zobacz: support.microsoft.com/en-us/kb/164787 i msdn.microsoft.com/en-us/library/windows/desktop/… Pierwszy parametr otrzymuje śmieci zamiast FAŁSZ, więc zawsze hibernuje zamiast przechodzić do spać.
SergeyT
1

Musisz najpierw wyłączyć hibernację w systemie Windows, a następnie przełączyć komputer w stan uśpienia . Użyj następujących dwóch poleceń:

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

i do wykonania akcji odwrotnej, hibernacji komputera, użyj poniższych poleceń:

powercfg -hibernate on
rundll32.exe powrprof.dll,SetSuspendState Hibernate
Mohsen Abasi
źródło
3
rundll32nie jest przeznaczony do dzwonienia SetSuspendStatei nie powinien być do tego wykorzystywany. Pierwszy parametr otrzymuje śmieci zamiast poprawnej wartości. Więc zawsze hibernuje zamiast iść spać (jeśli w ogóle nie wyłączyłeś hibernacji).
SergeyT
@SergeyT Wygląda na to, że działa dla mnie (po wyłączeniu hibernacji); czy mówisz, że to spowoduje uszkodzenie systemu Windows?
moondra
To psuje stos (ponieważ rundll32 oczekuje innej sygnatury wywołania, więc zrzuca rzeczy ze stosu, który tak naprawdę tam nie został umieszczony). Prowadzi to do nieoczekiwanego zachowania.
imoatama
@imoatama ładne znalezienie ...
masterxilo 16.08.18
1

Oto artykuł na temat używania CLI do zamykania systemu.

Microsoft zapewnia PsTools, który zapewnia zamknięcie CLI wraz z innymi przydatnymi narzędziami. Możesz to uzyskać tutaj .

wonton
źródło
1

działa dla mnie tylko QUICK SLEEPER (działa w systemie Windows 7,8,10).

kod źródłowy ps dostępny tutaj .

T.Todua
źródło
1
Czy jest szansa, że ​​podasz link do strony, z której pochodzi plik? Linkowanie bezpośrednio do pliku do pobrania, szczególnie przy użyciu skracacza adresu URL ga, może sprawić, że plik będzie wyglądał szczególnie podejrzanie, ponieważ jest to taktyka często stosowana przez twórców szkodliwego oprogramowania.
Mokubai
ok, zaktualizowałem link do oficjalnej strony.
T.Todua 20.04.16
1

Jeśli masz dostępny Python (z pywin32), możesz również wywołać tę funkcję SetSuspendState bezpośrednio za pomocą:

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

Można to łatwo umieścić w pliku wsadowym lub w skrócie:

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

Jeśli więc nie masz powiązanych plików interpretera z plikami .py, możesz kliknąć dwukrotnie łącze.

dash-tom-bang
źródło
1

Część zamykająca pytanie jest jasna dla wszystkich.
shutdown.exe /?pokazuje wszystkie opcje wyłączenia / restartu / opcji zaawansowanych rozruchu / rozruchu oprogramowania układowego.

Ale widzę tyle bełkotu wokół części Sen.
Każdy dostaje to, rundll32.execzego nie należy używać do wywoływania funkcji losowych, i działa tutaj tylko w przypadku hibernacji całkowicie przez przypadek. Ale taka jest natura systemu Windows - czarna skrzynka, którą ludzie przeszukali i znaleźli setki obejść, aby wykonać zadanie (krzyczeć, aby dostips).

Jest tak wiele „ właściwych ” rozwiązań proponujących narzędzia zewnętrzne , ale nie mogę znaleźć natywnego (hybrydowego / pinvoke / cokolwiek) skryptu wsadowego , nawet jeśli to pytanie pozostało aktywne przez lata.
Oto mój prosty 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

Działa nawet jako duże jedno-wierszowe polecenie:

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
źródło