44 Voix

Script Batch: Arrêter Ordinateur Windows

Tutoriel de Stefan Trost | Dernière mise à jour le 24/04/2024 | Créé le 13/03/2022

Avec ce petit script de lots à deux lignes, vous pouvez simplement arrêter un ordinateur avec le système d'exploitation Windows:

@echo off
%SYSTEMROOT%\system32\shutdown.exe -s -t 0

Pour utiliser le script, simplement créez un nouveau fichier texte vide, copiez les 2 lignes en lui et modifiez l'extension de fichier de "txt" à "bat".

Lorsque vous double-cliquez ensuite sur ce fichier, l'ordinateur s'arrêtera automatiquement sans demande.

Extensions utiles au Script

Bien entendu, nous pouvons déjà utiliser le script présenté exactement tel qu’il y est écrit. Néanmoins, en fonction de vos besoins, vous pouvez également apporter quelques modifications et extensions au script pour en tirer encore plus. Nous aimerions examiner ce qui est possible et comment cela fonctionne dans les sections suivantes:

Intégration dans d'autres Scripts

Ce script peut être utilisé, par exemple, dans les grands fichiers de script de lots nécessitant un long temps de traitement. Par exemple, des fichiers batch dans lesquels de nombreuses actions sont effectuées ou un grand nombre de programmes sont démarrés et exécutés.

Si vous souhaitez que l'ordinateur s'arrête automatiquement après le traitement du script, il suffit d'ajouter la deuxième ligne de l'exemple de code à la fin du long script batch comme dernière ligne. Cela évite à l'utilisateur d'avoir à attendre devant l'ordinateur la fin du script, car l'ordinateur s'éteindra automatiquement une fois le travail terminé, de sorte que vous n'aurez plus à vous soucier de l'arrêt par vous-même.

Arrêt retardé de l'Ordinateur

Le 0 respectivement le dernier paramètre dans la commande indique que l'arrêt doit être effectué dans les 0 secondes - cela signifie immédiatement et sans délai. En utilisant un numéro différent à cet endroit entraîne l'arrêt de l'ordinateur avec un délai, comme par exemple cet appel le montre:

%SYSTEMROOT%\system32\shutdown.exe -s -t 180

Ici on passe "-t 180", ce qui veut dire qu'on éteint le PC au bout de 3 minutes (3 x 60 secondes après l'appel de la commande). À propos, la lettre "t" signifie ici "time" (temps).

La spécification du temps doit toujours être donnée sous forme d'un nombre entier en secondes. Une valeur maximale de 315360000 (10 ans) peut être utilisée. Si nous omettons de spécifier une heure (c'est-à-dire si nous écrivons simplement "shutdown.exe -s" sans aucune spécification d'heure), une valeur t de 30 est supposée par défaut, ce qui signifie que l'ordinateur s'éteint après une demi-minute.

En dehors de cela, il est également important de noter que la définition du temps doit toujours être comprise sous la forme d'une sorte de "compte à rebours" et non sous la forme d'un temps absolu. Cela signifie que si, par exemple, nous donnons l'ordre d'arrêter l'ordinateur dans une heure (3 600 secondes) à 17h00, l'ordinateur seulement s'éteindra vraiment à 18h00, si l'ordinateur reste allumé pendant tout ce temps restant. Cependant, si l'ordinateur se met entre-temps en veille, par exemple à 17h10, le compte à rebours pour l'arrêt est également arrêté et ne reprend qu'après la remise sous tension de l'ordinateur. Nous devons garder cela à l’esprit, notamment lors de la définition de périodes plus longues.

Redémarrer l'Ordinateur

Le paramètre "s", que nous avons utilisé jusqu'à présent dans tous nos exemples précédents, représente le mot anglais "shutdown". Même si le nom du programme "shutdown.exe" ne le suggère pas immédiatement, nous pouvons également utiliser le même programme pour redémarrer notre ordinateur soit immédiatement, soit après une période de temps arbitraire définie par le paramètre "t". La seule chose que nous devons changer dans la commande que nous avons apprise jusqu'à présent est de remplacer le paramètre "s" par "r". La lettre "r" signifie "restart" (redémarrage).

%SYSTEMROOT%\system32\shutdown.exe -r -t 0

Avec cet appel à "shutdown.exe", nous redémarrons notre ordinateur immédiatement après avoir appelé la commande. Bien entendu, nous pouvons également travailler avec une temporisation cette fois-ci, comme le montre l'exemple suivant:

%SYSTEMROOT%\system32\shutdown.exe -r -t 60

Encore une fois, nous pouvons définir n'importe quel temps entre 0 et 315360000 secondes en utilisant le paramètre temps "t". Dans l'exemple, nous laissons l'ordinateur redémarrer exactement après 60 secondes respectivement après une minute.

Mettre l'Ordinateur en Mode Veille ou Veille Prolongée

Jusqu'à présent, nous avons examiné les paramètres de ligne de commande que nous pouvons utiliser pour arrêter ou redémarrer notre ordinateur. Cependant, au-delà de cela, Windows peut également être mis en mode veille ou en état d'hibernation (mode veile prolongée) pour économiser de l'énergie mais aussi pour pouvoir reprendre rapidement une session existante. Ces états peuvent également être activés à l'aide d'un script et sont utiles, par exemple, si après avoir exécuté un long script, nous voulons continuer au même point où nous nous sommes arrêtés avec tous les programmes et fichiers ouverts.

Le paramètre pour mettre notre ordinateur en hibernation est "h". Malheureusement, ce paramètre ne peut pas être utilisé de la même manière que nous l'avons vu précédemment pour "s" (arrêt) ou "r" (redémarrage). De plus, aucun paramètre pour le mode veille n'est disponible pour shutdown.exe, de sorte que nous devons donc procéder complètement différemment pour activer cet état.

Étant donné que l'activation de ces états est par conséquent plus compliquée et prendrait trop de place dans ce didacticiel, j'ai écrit un didacticiel distinct sur l'activation de l'hibernation et du mode veille de Windows à l'aide d'un script, dans lequel nous pouvons entrer ce sujet plus en détail qu'il n'est possible ici en un seul paragraphe.

Traitement des Programmes et Fichiers ouverts

Lors de l'exécution d'une commande pour arrêter automatiquement notre ordinateur, la question se pose inévitablement de savoir ce qui se passe si nous avons encore des applications ou des fichiers ouverts au moment où l'arrêt doit avoir lieu. La réponse à cette question dépend d'une part de notre temps spécifié via le paramètre "t", d'autre part nous pouvons également contrôler consciemment le comportement en utilisant le paramètre "f" (que nous n'avons pas encore introduit). Dans cette section, nous aimerions examiner en détail comment cela fonctionne.

Fondamentalement, si l'ordinateur est éteint, deux choses différentes peuvent se produire: soit tous les programmes sont automatiquement fermés sans aucune invite et les modifications non enregistrées des fichiers sont perdues, soit l'utilisateur a la possibilité de sauvegarder les fichiers non enregistrés avant de s'arrêter ou de redémarrer en affichant un message avant l'arrêt indiquant que les programmes avec des modifications non enregistrées sont toujours ouverts.

Lequel de ces deux cas se produit dépend de notre appel. Le tableau suivant donne un aperçu des différents cas pouvant survenir:

CommandeAction
shutdown -sArrêt immédiat sans demander ni attendre
shutdown -s -t 0Demande "Programmes ouverts" / "En attente du programme" / "Modifications non enregistrées"
shutdown -s -t 60Arrêt immédiat sans demander ni attendre
shutdown -s -f -t 0Arrêt immédiat sans demander ni attendre

Si nous utilisons shutdown.exe sans aucun autre paramètre tel que f ou t, un arrêt automatique se produit sans autre enquête. Cela signifie que dans ce cas, les fichiers non sauvegardés seraient perdus. Il en est de même si une temporisation d'au moins une seconde a été définie via le paramètre t (si on appelle "shutdown -s" sans préciser t, une temporisation de 30 secondes est utilisée par défaut pour que t soit également supérieur à 0 dans ce cas). Si, au contraire, nous définissons un arrêt immédiat sans délai avec "-t 0", une requête sur les fichiers non sauvegardés se produit par défaut, de sorte que la sauvegarde est encore possible au dernier moment. Si nous voulons éviter cela, nous pouvons en plus passer le paramètre f (force stop). Si ce paramètre est défini, "-t 0" provoquera également un arrêt immédiat sans aucune requête. Pour t > 0, f est automatiquement défini et ne peut pas être désactivé.

J'ai testé ces appels sur différents ordinateurs équipés de Windows 11, Windows 10, Windows 7 et Windows XP. Dans mes tests, Windows 11, Windows 10 et Windows 7 se sont comportés comme décrit. Windows XP, en revanche, fermait uniquement les programmes contenant des fichiers non enregistrés sans autre enquête si "f" était explicitement défini. Les autres systèmes ont toujours implicitement supposé que "f" était défini dès que t était supérieur à 0. Malheureusement, shutdown.exe ne connaît aucun autre paramètre pour remplacer ce comportement afin de conserver l'option de stockage même en cas d'arrêt ou de redémarrage retardé.

Bien que nous ayons toujours utilisé le paramètre "-s" (arrêt) pour les exemples d'appels présentés dans le tableau, "-r" (redémarrage) se comporte de la même manière.

Retirer la Commande

Le paramètre de temps "t" permet de définir des temps d'attente très longs jusqu'à l'arrêt ou le redémarrage de l'ordinateur. Comme déjà mentionné ci-dessus, un retard pouvant aller jusqu'à dix ans est possible. Seulement après l'expiration de ce délai, l'arrêt (-s) ou le redémarrage (-r) initié sera effectué. Mais que pouvons-nous faire si, au cours de cette période pouvant durer des ans, nous changeons d’avis après un certain temps et souhaitons retirer le commande?

Les développeurs de "shutdown.exe" ont pensé exactement à ce cas et nous ont donné le paramètre "a" (abort / avorter). L'exemple suivant montre comment nous pouvons utiliser ce paramètre pour annuler notre action planifiée:

%SYSTEMROOT%\system32\shutdown.exe -a

Donc, il suffit d'appeler "shutdown.exe" avec le seul paramètre "a". Cela supprimera l'arrêt ou le redémarrage prévu. Le paramètre "a" fonctionne quelle que soit celle de ces deux actions que nous avons programmée.

Bien entendu, cette commande ne fonctionne que si elle est appelée dans le délai défini par "t" et non après. Si nous avons appelé "shutdown.exe" avec "-t 0" (exécution immédiate), il est toujours trop tard pour abandonner. Si, par contre, nous avons démarré le programme avec "-t 60" (60 secondes), par exemple, et que nous émettons la commande d'abandon après, par exemple, 30 secondes, il n'est pas trop tard et l'arrêt ou le redémarrage automatique peut toujours être empêché.

Modification de la Commande

De plus, si nous voulons modifier le délai d'un arrêt déjà programmé, nous devons d'abord appeler la commande "shutdown.exe -a" avant de pouvoir définir une nouvelle heure via "shutdown.exe".

Supposons que nous ayons réglé le temps d'arrêt à 180 secondes à partir de maintenant et que nous souhaitions désormais réduire rétrospectivement ce temps à seulement 60 secondes. On pourrait peut-être maintenant s'attendre à ce que nous puissions simplement écraser la commande en définissant à nouveau une autre heure. Cependant, si nous utilisions la séquence de commandes suivante, la deuxième commande échouerait car l'arrêt est déjà réglé sur 180 secondes et la minuterie est déjà en cours d'exécution. Malgré ce deuxième appel, l'arrêt interviendrait néanmoins après 180 secondes.

%SYSTEMROOT%\system32\shutdown.exe -s -t 180
%SYSTEMROOT%\system32\shutdown.exe -s -t 60

Ce serait correct comme ceci:

%SYSTEMROOT%\system32\shutdown.exe -s -t 180
%SYSTEMROOT%\system32\shutdown.exe -a
%SYSTEMROOT%\system32\shutdown.exe -s -t 60

Ici, nous définissons d'abord un temps de 180 secondes pour notre arrêt. Cependant, pour supprimer cette commande, la première chose à faire est d'appeler "shutdown.exe -a" comme nous l'avons vu dans la dernière section. Ce n'est qu'alors que nous pourrons définir une nouvelle heure pour l'arrêt (ici "shutdown.exe -s -t 60").

Redémarrage Manuel

Une autre façon de "retirer" ou d'"annuler" la commande d'arrêt consiste à arrêter ou à redémarrer manuellement l'ordinateur avant que l'heure de l'action automatique ne soit atteinte. Une fois cela fait, tous les arrêts ou redémarrages du système programmés via shutdown.exe seront automatiquement supprimés.

Notifications des Utilisateurs

Si nous utilisons l'une des commandes présentées ici pour demander à notre ordinateur de ne pas s'éteindre ou de redémarrer immédiatement, mais seulement après un certain délai, le compte à rebours qui a été lancé avec cela ne s'exécute pas seulement en arrière-plan en secret. Au lieu de cela, l'utilisateur reçoit divers messages au cours de la période d'expiration, qui peuvent différer en fonction de la durée du délai ainsi que de la version de Windows utilisée. En général, ces notifications deviennent plus intrusives à mesure que l’on se rapproche de l’heure d’arrêt.

  • Pour des courtes périodes de moins de 3 minutes, immédiatement, une petite fenêtre de dialogue apparaît annonçant l'arrêt.
  • Pour des périodes comprises entre 3 et 10 minutes, deux petites fenêtres de dialogue s'affichent. La première boîte de dialogue annonce immédiatement l'arrêt dans X minutes, la deuxième boîte de dialogue vous le rappelle à nouveau 2 minutes avant l'arrêt.
  • Si le délai dépasse 10 minutes, il y a d'abord une notification concernant l'arrêt dans le bac, puis un nouvel avertissement 10 minutes avant l'arrêt et, selon le système, un autre dialogue 2 minutes avant l'arrêt.

Sur certaines versions de Windows, la dernière boîte de dialogue avant l'arrêt affichait un compte à rebours du temps restant dans les tests, sur d'autres versions de Windows, seule l'heure était affichée sans aucun compte à rebours.

Liste des Paramètres

Enfin, nous aimerions résumer tous les paramètres utilisés dans ce tutoriel ainsi que quelques autres paramètres utiles dans la liste suivante. En cliquant sur "Détails", vous pouvez accéder à la section correspondante de ce didacticiel où le paramètre en question est décrit et vous pouvez trouver des exemples d'utilisation du paramètre.

ParamètreSignification
-s(shutdown)Arrête l’ordinateur.Détails
-r(restart)Redémarre l'ordinateur.Détails
-h(hibernation)Met l'ordinateur en état d'hibernation.Détails
-l(logout)Déconnecte l'utilisateur actuel.
-a(abort)Annule l'arrêt ou le redémarrage.Détails
-t x(time)Fait que l'arrêt ou le redémarrage n'est effectué qu'après x secondes. Si ce paramètre est omis, l'action se produit après 30 secondes par défaut. 0 entraîne une exécution immédiate, une valeur maximale de 315360000 (10 ans) peut être utilisée. Ne peut pas être utilisé avec -h.Détails
-f(force stop)Vous pouvez utiliser ce paramètre pour forcer la fermeture des applications potentiellement actives sans avertissement. Les modifications non enregistrées dans les fichiers peuvent être perdues. Si t est supérieur à 0, le paramètre -f est automatiquement appliqué.Détails
-i(interface)Affiche une interface utilisateur graphique qui vous permet de configurer l'arrêt manuellement.

Shutdown.exe connaît quelques autres paramètres en plus des paramètres répertoriés dans cette compilation, mais ceux-ci ne sont pas requis aux fins décrites ici. Par exemple, le paramètre "c" (comment / commentaire) peut être utilisé pour définir un commentaire concernant le redémarrage ou l'arrêt, ou le paramètre "d" peut être utilisé pour spécifier une raison pour le redémarrage ou l'arrêt. Si vous souhaitez en savoir plus sur ces paramètres et sur d'autres, vous pouvez simplement utiliser l'appel de ligne de commande "shutdown -?". Avec cette commande, shutdown.exe imprime une liste de tous les paramètres possibles directement sur la ligne de commande. Veuillez noter que les paramètres disponibles peuvent différer selon la version de Windows utilisée.

Informations de Fond

Notre script appelle le programme shutdown.exe, qui initie le processus d'arrêt ou de redémarrage de Windows et qui peut également être utilisé pour mettre l'ordinateur en mode veille. Ce programme se trouve dans le sous-répertoire "system32" du dossier Windows (cela donne généralement le chemin "C:\Windows\System32").

Cependant, comme le dossier système peut avoir un chemin absolu différent sur chaque ordinateur (selon l'endroit où Windows a été installé), au lieu d'utiliser le chemin absolu mentionné, nous utilisons la constante "%SYSTEMROOT%", qui nous donne toujours le bon dossier pour l'installation du système respective pour l'ordinateur sur lequel la commande est exécutée. Après tout, il serait concevable que quelqu'un n'ait pas installé Windows sur le lecteur C: ou que le dossier diffère d'une ancienne version de Windows aux futures versions de Windows.

Écrits alternatifs

Habituellement, Windows trouve le programme "shutdown.exe" même sans spécifier de chemin. Cela nous permet de raccourcir la commande (ici pour un arrêt immédiat) à la ligne suivante:

shutdown -s -t 0

De plus, les paramètres peuvent également être transmis avec une barre oblique au lieu du trait d'union utilisé dans la plupart des exemples. Avec cela, la commande mentionnée ressemblerait à ceci:

shutdown /s /t 0

Généralement, toutes les options mentionnées devraient fonctionner, que vous utilisiez le trait d'union ou la barre oblique et que vous définissiez ou non le chemin complet. En cas de doute et par mesure de sécurité, vous devez bien sûr essayer la commande sur l'ordinateur sur lequel le script doit être exécuté avant de l'utiliser de manière productive.

RépondrePositifNégatifDateVoix
00 Voix

Bonjour mon pc redémarre malgré tout, j'ai l'impression d'avoir tout essayé, merci.
09/04/2024 à 22:59

RépondrePositif Négatif
11 Vote

Existe-t-il une possibilité d'appeler shutdown.exe sur un Windows moderne de telle manière que, malgré un délai défini (c'est-à-dire le paramètre t > 0), tout ne soit pas simplement fermé automatiquement, mais il est demandé si des programmes ou des fichiers non enregistrés seraient toujours ouverts?
22/04/2024 à 13:47

RépondrePositif Négatif
11 Vote

Puisque le paramètre t doit être égal à zéro pour obtenir une demande ou pour empêcher la fermeture forcée des programmes, vous pouvez par exemple faire ce qui suit:

timeout /t 180 /nobreak
shutdown -s -t 0

Ici le paramètre t reste à 0, afin que le message concernant les programmes encore ouverts ne soit pas supprimé. Dans le même temps, nous avons simplement supprimé le délai de la commande shutdown avec un délai d'attente de 3 minutes (180 secondes) et l'avons ajouté à l'avance.
22/04/2024 à 22:15

Positif Négatif
Répondre
Répondre

Sur l’Auteur

AvatarVous pouvez trouver des logiciels de Stefan Trost sur fr.sttmedia.com. Avez-vous besoin d'un logiciel personnalisé selon vos propres besoins? Écrivez-nous: fr.sttmedia.com/contact
Voir Profil

 

Sujets Connexes

La Recherche Askingbox

Info | 0 Commentaires

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.