web-dev-qa-db-fra.com

Comment puis-je arrêter, redémarrer ou déconnecter Windows via un fichier bat?

J'utilise Connexion Bureau à distance pour accéder à un poste de travail. Mais dans cet environnement, je ne peux pas utiliser les options d'alimentation du menu Démarrer. J'ai besoin d'un autre moyen d'arrêter ou de redémarrer.

Comment contrôler l'état d'alimentation de mon ordinateur via la ligne de commande?

646
Keng

Les manières les plus courantes d'utiliser la commande shutdown sont les suivantes:

  • shutdown -s - Arrête.
  • shutdown -r - Redémarre.
  • shutdown -l - Se déconnecte.
  • shutdown -h - Hiberne.

    Remarque: Il existe un piège courant dans lequel les utilisateurs pensent que -h signifie "aide" (ce qui est le cas pour tous les autres programmes en ligne de commande. sauf shutdown.exe, où il signifie "veille prolongée"). Ils exécutent ensuite shutdown -h et éteignent accidentellement leurs ordinateurs. Attention à ça.

  • shutdown -i - "Mode interactif". Au lieu d'effectuer une action, il affiche une boîte de dialogue graphique.

  • shutdown -a - Abandonne une commande d'arrêt précédente.

Les commandes ci-dessus peuvent être combinées avec ces options supplémentaires:

  • -f - Force les programmes à se fermer. Empêche le processus d'arrêt de rester bloqué.
  • -t <seconds> - Définit le délai avant l'arrêt. Utilisez -t 0 pour arrêter immédiatement.
  • -c <message> - Ajoute un message d'arrêt. Le message se retrouvera dans le journal des événements.
  • -y - Force une réponse "oui" à toutes les requêtes d'arrêt.

    Remarque: Cette option n'est documentée dans aucune documentation officielle. Il a été découvert par ces utilisateurs de StackOverflow .


Je veux m'assurer que d'autres très bonnes réponses sont également mentionnées avec celle-ci. Ici, ils ne sont dans aucun ordre particulier.

1156
Keng

Si vous êtes sur un ordinateur distant, vous pouvez également ajouter l'option -f pour forcer le redémarrage. Sinon, votre session peut se fermer et une application obstinée peut bloquer le système.

J'utilise ceci chaque fois que je veux forcer un redémarrage immédiat:

shutdown -t 0 -r -f

Pour une option plus conviviale "donnez-leur du temps", vous pouvez utiliser ceci:

shutdown -t 30 -r

Comme vous pouvez le voir dans les commentaires, le -f est impliqué par le délai d'attente.

Brutus 2006 est un utilitaire qui fournit une interface graphique pour ces options.

374
JosephStyons

Personne n’a mentionné l’option -m pour l’arrêt à distance:

shutdown -r -f -m \\machinename

Aussi:

  • Le paramètre -r provoque un redémarrage (qui correspond généralement à ce que vous souhaitez sur une machine distante, car son démarrage physique peut s'avérer difficile).
  • L'option de paramètre -f force le redémarrage.
  • Bien entendu, vous devez disposer des privilèges appropriés pour éteindre la machine distante.
81
Kip

Réponse originale: octobre 2008

Vous avez aussi tous les "rundll32.exe Shell32.dll" série:

(voir mise à jour ci-dessous)

  • _rundll32.exe user.exe,**ExitWindows**_ [Arrêt rapide de Windows]
  • _rundll32.exe user.exe,**ExitWindowsExec**_ [Redémarrer Windows]

    _rundll32.exe Shell32.dll,SHExitWindowsEx n
    _

n signifie:

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

(peut être combiné -> 6 = 2 + 4 _FORCE REBOOT_)


Mise à jour avril 2015 (6 ans et plus après):

1800 INFORMATION indique gentiment dans les commentaires :

N'utilisez pas _rundll32.exe_ à cette fin. Il s'attend à ce que la fonction que vous avez transmise sur la ligne de commande ait une signature de méthode très spécifique - elle ne correspond pas à la signature de méthode de ExitWindows.

Raymond CHEN a écrit:

La signature de fonction requise pour les fonctions appelées par _rundll32.exe_ est:

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

Cela n'a pas empêché les gens d'utiliser _rundll32_ pour appeler des fonctions aléatoires qui n'étaient pas conçues pour être appelées par _rundll32_, comme _user32 LockWorkStation_ ou _user32 ExitWindowsEx_.

(Oops)

La signature de fonction réelle pour ExitWindowsEx est:

_BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);
_

Et pour le rendre limpide:

_Rundll32_ est un résidu de Windows 95 et il est obsolète depuis au moins Windows Vista car il enfreint de nombreuses consignes d'ingénierie modernes.

37
VonC

Un autre petit conseil: lors du routage du fichier de commandes, j'aime pouvoir l'abandonner au cas où je l'exécuterais accidentellement. Le fichier de commandes appelle donc l’arrêt mais vous laisse ensuite à la commande Invite.

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

De plus, comme c'est une minuterie, vous obtenez à peu près le même frisson que lorsque chasse dans le sentier de l'Oregon .

10
Gavin

Lorsqu'il est installé sur une machine (la cible est de toute façon Windows XP; je ne suis pas sûr de la cible de Windows Vista), bien que arrêt dans le menu de démarrage soit remplacé par session de déconnexion ou quelque chose du genre qu’il devrait y en avoir un qui s'appelle 'Windows Security' qui fait aussi la même chose que Ctrl + Alt + End comme l'a souligné Owen.

7
Carl

Vous en êtes probablement conscient, mais juste au cas où: il est beaucoup plus facile de simplement taper shutdown -r (ou la commande de votre choix) dans la boîte de dialogue "Exécuter" et d'appuyer sur Entrée.

Enregistre en laissant des fichiers batch traîner partout.

7
Dean Rather

Je voudrais écrire ceci dans Notepad ou WordPad pour une commande de déconnexion de base:

@echo off
shutdown -l

C’est fondamentalement la même chose que cliquer sur démarrer et fermer la session manuellement, mais c’est un peu plus rapide si le fichier de commandes est prêt.

5
Grant

Je suis en retard à la fête, mais je n'ai pas encore vu cette réponse. Lorsque vous ne souhaitez pas utiliser un fichier de commandes ou tapez la commande. Vous pouvez simplement définir le focus sur le bureau, puis utiliser Alt + F4.

Windows vous demandera ce que vous voulez faire, sélectionnez Arrêter ou Redémarrer.

Pour les captures d'écran et même une vidéo, voir: https://tinkertry.com/how-to-shutdown-or- restart-windows-over-rdp

5
msoft