682 Stimmen

Wie kann ich Windows über eine Bat-Datei herunterfahren, neu starten oder abmelden?

Ich habe mit Remote-Desktop-Verbindung um einen Arbeitsplatz zu betreten. Aber in dieser Umgebung kann ich die Energieoptionen im Startmenü nicht verwenden. Ich brauche eine alternative Möglichkeit zum Herunterfahren oder Neustarten.

Wie kontrolliere ich den Energiestatus meines Computers über die Befehlszeile?

1190voto

Keng Punkte 49933

Die gebräuchlichsten Methoden zur Verwendung der shutdown Befehl sind:

  • shutdown -s - Schaltet ab.

  • shutdown -r - Neustarts.

  • shutdown -l - Meldet sich ab.

  • shutdown -h - Hiberniert.

    Note : Es gibt einen häufigen Fallstrick, bei dem die Benutzer denken -h bedeutet "Hilfe" (was es für jedes andere Befehlszeilenprogramm tut... außer shutdown.exe was so viel wie "Winterschlaf" bedeutet). Sie laufen dann shutdown -h und schalten ihre Computer versehentlich aus. Darauf sollten Sie achten.

  • shutdown -i - "Interaktiver Modus". Anstatt eine Aktion auszuführen, wird ein GUI-Dialog angezeigt.

  • shutdown -a - Bricht einen vorherigen Shutdown-Befehl ab.

Die oben genannten Befehle können mit diesen zusätzlichen Optionen kombiniert werden:

  • -f - Zwingt Programme zum Beenden. Verhindert, dass der Shutdown-Prozess stecken bleibt.
  • -t <seconds> - Legt die Zeit bis zur Abschaltung fest. Verwenden Sie -t 0 sofort abzuschalten.
  • -c <message> - Fügt eine Meldung zum Herunterfahren hinzu. Die Meldung wird in das Ereignisprotokoll aufgenommen.
  • -y - Erzwingt eine "Ja"-Antwort auf alle Abfragen zum Herunterfahren.

    Note : Diese Option ist in keiner offiziellen Dokumentation dokumentiert. Sie wurde entdeckt von diese StackOverflow-Benutzer .


Ich möchte sicherstellen, dass neben dieser auch einige andere wirklich gute Antworten erwähnt werden. Hier sind sie in keiner besonderen Reihenfolge.

381voto

JosephStyons Punkte 55410

Wenn Sie sich auf einem entfernten Rechner befinden, können Sie auch die Option -f zu Kraft den Neustart. Andernfalls kann Ihre Sitzung geschlossen werden und eine hartnäckige Anwendung kann das System zum Stillstand bringen.

Ich verwende dies immer dann, wenn ich einen sofortigen Neustart erzwingen möchte:

shutdown -t 0 -r -f

Für eine freundlichere "Gib ihnen etwas Zeit"-Option können Sie dies verwenden:

shutdown -t 30 -r

Wie Sie in den Kommentaren sehen können, ist das -f durch die Zeitüberschreitung impliziert.

Brutus 2006 ist ein Dienstprogramm, das eine grafische Benutzeroberfläche für diese Optionen bietet.

85voto

Kip Punkte 102702

Keiner hat erwähnt -m Option für die Fernabschaltung:

shutdown -r -f -m \\machinename

Auch:

  • Le site -r führt zu einem Neustart (was bei einem entfernten Rechner in der Regel erwünscht ist, da ein physischer Start schwierig sein kann).
  • Le site -f Option erzwingt den Neustart.
  • Sie müssen natürlich über die entsprechenden Berechtigungen verfügen, um den entfernten Rechner herunterzufahren.

40voto

VonC Punkte 1117238

Ursprüngliche Antwort: Okt. 2008

Sie haben auch alle " rundll32.exe shell32.dll " serie:

(siehe Update unten)

  • rundll32.exe user.exe,**ExitWindows** [Schnelles Herunterfahren von Windows]
  • rundll32.exe user.exe,**ExitWindowsExec** [Windows neu starten]

    rundll32.exe shell32.dll,SHExitWindowsEx n

n steht für:

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

(kann kombiniert werden -> 6 = 2+4 FORCE REBOOT )


Update April 2015 (6+ Jahre später):

1800 INFORMATIONEN weist höflich darauf hin in den Kommentaren :

Verwenden Sie nicht rundll32.exe zu diesem Zweck. Es erwartet, dass die Funktion, die Sie auf der Kommandozeile übergeben haben, eine ganz bestimmte Methodensignatur hat - sie stimmt nicht mit der Methodensignatur von ExitWindows .

Raymond CHEN schrieb:

Die erforderliche Funktionssignatur für Funktionen, die von rundll32.exe ist:

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

Das hat die Leute nicht davon abgehalten, die rundll32 um beliebige Funktionen aufzurufen, die nicht für den Aufruf durch rundll32 , wie user32 LockWorkStation o user32 ExitWindowsEx .

(oops)

Die eigentliche Funktionssignatur für ExitWindowsEx lautet:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

Und um es kristallklar zu machen:

Rundll32 ist ein Überbleibsel von Windows 95 und wird spätestens seit Windows Vista nicht mehr verwendet, da es gegen eine Reihe moderner technischer Richtlinien verstößt.

12voto

Gavin Punkte 9667

Noch ein kleiner Tipp: Wenn ich eine Batch-Datei verwende, möchte ich die Möglichkeit haben, sie abzubrechen, falls ich sie versehentlich ausführe. Die Stapeldatei ruft also das Herunterfahren auf, lässt Sie aber danach an der Eingabeaufforderung zurück.

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

Und da es auf einem Timer läuft, hat man ungefähr den gleichen Nervenkitzel, wie wenn man Die Jagd in The Oregon Trail .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X