Jak zamknąć, ponownie uruchomić lub wylogować się z systemu Windows za pomocą pliku nietoperza?


660

Korzystam z usługi Podłączanie pulpitu zdalnego, aby dostać się na stację roboczą. Ale w tym środowisku nie mogę korzystać z opcji zasilania w menu Start. Potrzebuję alternatywnego sposobu zamknięcia lub ponownego uruchomienia.

Jak kontrolować stan zasilania komputera za pomocą wiersza polecenia?

Odpowiedzi:


1164

Najczęstsze sposoby korzystania z shutdownpolecenia to:

  • shutdown -s - Wyłącza.
  • shutdown -r - uruchamia się ponownie.
  • shutdown -l - Wylogowuje się.
  • shutdown -h - Hibernuje.

    Uwaga: Często zdarza się, że użytkownicy myślą, że -hoznacza „pomoc” (co robi dla każdego innego programu wiersza polecenia ... z wyjątkiem sytuacji shutdown.exe, gdy oznacza to „hibernacja”). Następnie uruchamiają shutdown -hi przypadkowo wyłączają komputery. Uważaj na to.

  • shutdown -i- „Tryb interaktywny”. Zamiast wykonywania akcji wyświetla okno dialogowe GUI.

  • shutdown -a - Przerywa poprzednie polecenie zamknięcia.

Powyższe polecenia można łączyć z tymi dodatkowymi opcjami:

  • -f- Wymusza zamknięcie programów. Zapobiega zablokowaniu procesu zamykania.
  • -t <seconds>- Ustawia czas do wyłączenia. Użyj, -t 0aby natychmiast wyłączyć.
  • -c <message>- Dodaje komunikat zamknięcia. Wiadomość znajdzie się w dzienniku zdarzeń.
  • -y - Wymusza odpowiedź „tak” na wszystkie zapytania zamykające.

    Uwaga: Ta opcja nie jest udokumentowana w żadnej oficjalnej dokumentacji. Zostało odkryte przez tych użytkowników StackOverflow .


Chcę się upewnić, że wraz z tym wymieniono także kilka innych naprawdę dobrych odpowiedzi. Tutaj nie są w określonej kolejności.


188
Przeczytaj o używaniu -f (for force) w następnej odpowiedzi. Mówi facet, który tego nie zrobił, a teraz komputer zablokował się po drugiej stronie planety podczas weekendu (:
pasx,

11
+1 po prostu tego, którego użyłem /<switch>zamiast -<switch>. Używa również sekcja pomocy /.
legends2k

Moje doświadczenie: używanie opcji -s (zamykanie) w Pulpicie zdalnym (jak wspomina OP) tylko kończy pulpit zdalny, ale pozostawia zdalny komputer nietknięty.
Heri

3
Używam „-r” dla zdalnych komputerów. Więc uruchomi się ponownie i nie będzie wymagać ręcznej interwencji.
granadaCoder 11.04.16

6
Jeśli używasz komputera zdalnego, możesz również dodać -fopcję wymuszenia ponownego uruchomienia komputera. W przeciwnym razie sesja może zostać zamknięta, a uparta aplikacja może zawiesić system. Aby wymusić natychmiastową restart: shutdown -t 0 -r -f. Dla bardziej przyjazny opcją jest „dać im trochę czasu”, można użyć to: shutdown -t 30 -r. -fJest dorozumiany przez timeout. (z proponowanej edycji Mateusz Konieczny )
Ole VV

375

Jeśli używasz komputera zdalnego, możesz również dodać opcję -f, aby wymusić ponowne uruchomienie. W przeciwnym razie sesja może zostać zamknięta, a uparta aplikacja może zawiesić system.

Używam tego, ilekroć chcę wymusić natychmiastowe ponowne uruchomienie:

shutdown -t 0 -r -f

Aby uzyskać bardziej przyjazną opcję „daj im trochę czasu”, możesz użyć tego:

shutdown -t 30 -r

Jak widać w komentarzach, wartość -f wynika z limitu czasu.

Brutus 2006 to narzędzie zapewniające graficzny interfejs użytkownika dla tych opcji.


15
Czytając pomoc dotyczącą zamykania systemu Windows 8.1 widzę: „Jeśli limit czasu jest większy niż 0, sugerowany jest parametr / f”. A ponieważ domyślny limit czasu wynosi 30 sekund, myślę, że lepiej jest dać trochę czasu na czyste zamknięcie, a następnie nastąpi wymuszone wyłączenie po upływie limitu czasu.
Zitrax

2
Trafne spostrzeżenie. Wydaje mi się, że kiedy to napisałem, używałem systemu operacyjnego Windows XP. Widzę, że uwaga „/ f jest dorozumiana” dotyczy także Windows 7. Odpowiednio zmodyfikowałem przykład.
JosephStyons,

2
Domyślnie mają 30 sekund. Używam do natychmiastowego: shutdown / r / t 0 i do przyjaznego: shutdown / r
dzampino

81

Nikt nie wspomniał o -mopcji zdalnego wyłączania:

shutdown -r -f -m \\machinename

Również:

  • Ten -rparametr powoduje ponowne uruchomienie komputera (co jest zwykle tym, czego chcesz na zdalnym komputerze, ponieważ fizyczne uruchomienie może być trudne).
  • Opcja -fparametru wymusza ponowne uruchomienie.
  • Oczywiście musisz mieć odpowiednie uprawnienia, aby zamknąć zdalną maszynę.

2
czy nazwa komputera może być adresem IP? Czy możesz to zrobić przez Internet?
mcmillab

Jeśli możesz uzyskać dostęp do komputera za pośrednictwem \\IP.AD.DR.ESS(tzn. Niezbędne porty są otwarte i masz wymagane uprawnienia), to tak, powinno to działać przez Internet.
Timothy Zorn,

Najpierw próbowałem tylko z opcją -r i to nie działało, ponieważ chciałem zdalnie zamknąć system. Działa z zamknięciem systemu -r -m. -f nie było potrzebne.
Dchris

38

Oryginalna odpowiedź: październik 2008 r

Ty też masz wszystko rundll32.exe shell32.dll seria:

(patrz aktualizacja poniżej)

  • rundll32.exe user.exe,**ExitWindows** [Szybkie zamykanie systemu Windows]
  • rundll32.exe user.exe,**ExitWindowsExec** [Uruchom ponownie system Windows]

    rundll32.exe shell32.dll,SHExitWindowsEx n
    

gdzie noznacza:

  • 0 - LOGOFF
  • 1 - SHUTDOWN
  • 2 - REBOOT
  • 4 - FORCE
  • 8 - POWEROFF

(można łączyć -> 6 = 2 + 4 FORCE REBOOT)


Aktualizacja kwiecień 2015 r. (Ponad 6 lat później):

1800 INFORMACJI uprzejmie wskazuje w komentarzach :

Nie używaj rundll32.exedo tego celu. Oczekuje, że funkcja przekazana w wierszu polecenia ma bardzo konkretną sygnaturę metody - nie pasuje do sygnatury metody ExitWindows.

Raymond CHEN napisał:

Podpis funkcji wymagany dla funkcji wywoływanych przez rundll32.exeto:

void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
       LPSTR pszCmdLine, int nCmdShow);

Nie powstrzymało to ludzi przed rundll32wywoływaniem funkcji losowych, które nie zostały zaprojektowane do wywoływania przez rundll32, jak user32 LockWorkStationlub user32 ExitWindowsEx.

(ups)

Rzeczywista sygnatura funkcji dla ExitWindowsEx to:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

Aby było krystalicznie czyste:

Rundll32 jest pozostałością po systemie Windows 95 i jest przestarzałe przynajmniej od systemu Windows Vista, ponieważ narusza wiele nowoczesnych wytycznych inżynieryjnych.


3
jaka jest różnica między zamknięciem a wyłączeniem?
Asdfg

17
@Asdfg dzisiaj? Żaden. W przypadku NT4 i wcześniejszych płyta główna nie zawsze obsługiwała wyłączanie zasilania, tylko wyłączanie (okna były całkowicie zamknięte, ale komputer był nadal zasilany energią elektryczną). Tylko wyłączenie zasilania (jeśli sprzęt go obsługiwał w tym czasie) zamykało okna i odcinało moc elektryczną. Dzisiaj robią to zarówno wyłączanie, jak i wyłączanie.
VonC

2
Nie używaj do tego celu pliku rundll32.exe. Oczekuje, że funkcja przekazana w wierszu polecenia ma bardzo konkretną sygnaturę metody - nie pasuje do sygnatury metody ExitWindows.
1800 INFORMACJI

2
@ 1800INFORMATION bardzo dobry punkt. Przepisałem odpowiedź, aby wyjaśnić, że nie jest to prawidłowa opcja.
VonC

3
Szczerze mówiąc, tak naprawdę nie ma znaczenia, jaki rodzaj wycieku pamięci lub uszkodzenia stosu powodujesz, jeśli natychmiast wyłączasz komputer.
PRMan

10

Kolejna mała wskazówka: gdy wybieram trasę pliku wsadowego, lubię móc ją przerwać na wypadek przypadkowego uruchomienia. Tak więc plik wsadowy wywołuje zamknięcie, ale pozostawia cię w wierszu polecenia.

@echo off
echo Shutting down in 10 seconds. Please type "shutdown /a" to abort.
cmd.exe /K shutdown /f /t 10 /r

Ponadto, ponieważ jest na czas, masz mniej więcej tyle samo emocji, co podczas polowania na szlaku w Oregon .


1
możesz wstawić pauzę do pliku kąpieli, a następnie polecenie przerwania, taka sekwencja przerwania byłaby dowolnym klawiszem
rsk82

@ rsk82, możliwość ucieczki od pisania na klawiaturze była niefortunnym ograniczeniem mojej kopii TRS-80 Oregon Trail, ale szczerze mówiąc, zawsze uważałem to za oszustwo, a mój brat byłby wściekły za każdym razem, gdy to robiłem. Mówiąc tylko: dlaczego chcesz rozwścieczyć mojego brata?
Gavin

7

Po przeniesieniu do komputera (docelowo jest to Windows XP; nie jestem pewien co do docelowego systemu Windows Vista), chociaż Shutdown w menu Start jest zastąpiony przez Disconnect Session lub coś w tym rodzaju, powinien istnieć taki o nazwie „Windows Security”, który również działa to samo, co Ctrl+ Alt+, Endjak wskazał Owen.


Kiedyś korzystałem z tej metody, ale już nie działa, tak jak w wierszu poleceń.
user742864,

Mam również gadżet z przyciskami zamykania, restartu, hibernacji, blokady, która działa w RDP.
user742864,

7

Prawdopodobnie zdajesz sobie z tego sprawę, ale na wszelki wypadek: o wiele łatwiej jest po prostu wpisać shutdown -r(lub dowolne inne polecenie) w polu „Uruchom” i nacisnąć Enter.

Zapisuje pozostawienie plików wsadowych wszędzie wokół.


tak ... po prostu lubię, aby podwójne kliknięcie tam siedział ... to jest też plik -r nietoperza; o)
Keng

17
uważaj, aby nie wstawić go do programów-> startup :)
Dean Raczej

aw .. i ciekawe zachowanie zostanie osiągnięte, jeśli kod zostanie umieszczony w pliku shutdown.bat. Spróbuj!
:)

6

Napisałbym to w Notatniku lub WordPad dla podstawowego polecenia wylogowania:

@echo off
shutdown -l

Jest to w zasadzie to samo, co ręczne kliknięcie przycisku Start i wylogowanie, ale jest tylko nieco szybsze, jeśli masz gotowy plik wsadowy.


5

Spóźniłem się na przyjęcie, ale nie widziałem jeszcze tej odpowiedzi. Jeśli nie chcesz używać pliku wsadowego lub wpisz polecenia. Możesz po prostu ustawić fokus na pulpicie, a następnie użyć Alt+ F4.

Windows zapyta cię, co chcesz zrobić, wybierz zamknij lub uruchom ponownie.

Zrzuty ekranu, a nawet wideo, patrz: https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp


3
@Keng, czytając aktualny problem „Nie mogę użyć funkcji zamykania / restartowania w menu Start” , wydaje mi się, że chcesz wiedzieć, jak to zrobić. Wiersz poleceń to jedno rozwiązanie, klawiatura to drugie. Może to pomóc innym użytkownikom, którzy natkną się na to pytanie i chcą po prostu łatwego rozwiązania do zamknięcia lub ponownego uruchomienia.
msoft,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.