Comment puis-je mettre l'ordinateur en veille à partir du menu Invite de commandes / Exécuter?

144

Je sais que presque tout sur Windows, comme l’ouverture de toute application, peut être effectué à partir de l’ invite de commande ou du menu Exécuter .

Comment puis-je mettre mon ordinateur en veille ou l' éteindre ? Quelle est la commande pour cela?

Lazer
la source
Tapez shutdown sur l'invite de commande et jetez un coup d'œil sur les résultats obtenus sous XP et au-dessus, à ma connaissance.
user10547

Réponses:

128

Vous allez trouver shutdown.exepour être votre ami.

Autres commandes pratiques voir ce post:

Ordinateur en veille (pour en savoir plus, consultez https://superuser.com/a/463652/249349 )

Verrouiller le poste de travail

Ordinateur Hibernate

see answers by Scott Chamberlain and Eric L

Redémarrer l'ordinateur

Shutdown.exe -r -t 00

Éteindre l'ordinateur

Shutdown.exe -s -t 00

EDIT / UPDATE:

Il semble que le fait de dormir sur un ordinateur pose problème si le mode veille prolongée est activé.

Copier d'autres réponses:

Vous pouvez soit essayer PsShutdown ou:

La commande pundrprof.dll rundll32.exe, SetSuspendState 0,1,0 pour la mise en veille est correcte. Toutefois, elle est mise en veille au lieu de la mise en veille si vous ne la désactivez pas.

Voici comment faire cela:

Accédez au menu Démarrer et ouvrez une invite de commande avec privilèges élevés en tapant cmd.exe, en cliquant avec le bouton droit de la souris et en choisissant Exécuter en tant qu'administrateur. Tapez la commande suivante:

powercfg -hibernate off
brandstaetter
la source
21
Le problème rundll32.exe powrprof.dll,SetSuspendState 0,1,0est que cela ne fonctionne pas comme il se doit. SetSuspendStatemettra l'ordinateur dans une sorte de mode veille hybride / veille prolongée. Lorsque vous utilisez le bouton Mettre en veille du menu Démarrer, vous pouvez sortir votre ordinateur du mode veille en appuyant sur n’importe quelle touche de votre clavier. En utilisant cette ligne de commande, make est beaucoup plus lent à reprendre en raison de l'état de veille plus profond et ne peut reprendre que si vous appuyez sur le bouton d'alimentation de votre ordinateur. Il ne peut pas reprendre pour une pression sur une touche. Alors ... comment faites-vous dormir comme en veille normale - vous pouvez le reprendre en appuyant sur une touche?
Geek entreprise
6
Les votes négatifs ne sont nullement injustifiés. Votre réponse ne répond pas à la question seule. Les lecteurs devraient être en mesure de rassembler suffisamment d’informations utiles dans une réponse pour résoudre le problème sans avoir à suivre de liens menant à d’autres sites susceptibles de devenir cassés ou morts.
Iszi
5
Rétrogradé pour ne pas répondre à la question posée: même dans la page liée, la méthode décrite pour mettre la machine en veille ne fonctionnera pas si le mode veille prolongée est activé.
akurtser
4
J'ai également testé la commande de veille et peux également confirmer qu'elle ne fonctionne pas comme prévu. Cela n'a rien à voir avec la haine / la traîne, mais si cette commande ne fonctionne pas, alors la question reste sans réponse, puisque c'était la partie principale de la question.
RÉPONDU le
6
rundll32ne doit pas être utilisé pour appeler SetSuspendStatecar sa signature ne correspond pas à celle attendue par rundll32. Voir: support.microsoft.com/en-us/kb/164787 et msdn.microsoft.com/en-us/library/windows/desktop/… Le premier paramètre obtient un garbage au lieu de FALSE. C'est la raison pour laquelle il hiberne au lieu de s'endormir.
SergeyT
86

Les méthodes publiées par d'autres personnes ne fonctionnent pas correctement si l'hibernation est activée sur un ordinateur, si l'ordinateur ne se réveille pas sur le clavier ou, plus important encore, s'il ne se réveille pas avec une tâche planifiée.

PsShutdown est l’un des outils Sysinternals de Microsoft, qui utilise la commande psshutdown -d -t 0pour dormir correctement et non pour mettre en veille prolongée un ordinateur.

Scott Chamberlain
la source
Nécessite une élévation par rapport à l'administrateur
dsmtoday
3
Fonctionne pour moi dans Windows 10 x64, version 1709.
Hans Løken
1
Fonctionne pour moi dans Win10x64 Version 1709, exécutez cmd avec un compte utilisateur administrateur mais sans run as administratoroption de clic droit
Viktor Carlson
3
Fonctionne pour moi avec Windows 10 (pas même en tant qu'administrateur).
DAB
3
Fonctionne sous Windows 10 x64 Build 15063. Il est nécessaire de télécharger PsTools et de le copier psshutdown.exedepuis l’archiv afin, par exemple C:\Windows\System32, de pouvoir utiliser la commande sans pathprefix. Il faut ensuite exécuter psshutdown -d -t 0avec les privilèges d'administrateur pour pouvoir suspendre. Cela devrait être la réponse acceptée , car elle répond à la question, même si ce n'est pas avec les outils préinstallés par Windows.
Arch Linux Tux
19

La commande rundll32.exe powrprof.dll,SetSuspendState 0,1,0de veille est correcte. Toutefois, elle passe en veille prolongée au lieu de dormir si vous ne désactivez pas la veille prolongée.

Voici comment faire cela:

Accédez au menu Démarrer et ouvrez une invite de commande avec privilèges élevés en la saisissant cmd.exe, en cliquant avec le bouton droit de la souris et en choisissant Exécuter en tant qu'administrateur . Tapez la commande suivante:

powercfg -hibernate off
Gaffe
la source
5
Je pense que c'est la première réponse qui résout le problème. Je mets ces deux lignes (-hibernate off d'abord) et crée un fichier de commandes qui met le pc en veille. Le problème, c’est qu’il désactive essentiellement le mode hibernation, ce qui n’est pas ce que je voulais. Par conséquent, j’ai ajouté une tâche planifiée déclenchée sur "au poste de travail déverrouillé" pour réactiver le mode hibernation avec un lot dont la seule ligne est " powercfg -hibernate off ". Ensuite, j'ai configuré une clé courte pour le premier fichier de commandes. Terminé. Fonctionne comme un charme, merci!
akurtser
C'est tellement bizarre. L'hibernation doit être désactivée avant de pouvoir dormir correctement? Existe-t-il un nom pour l'état de veille / suspension hybride powrprof.dlllorsque la veille prolongée est activée? Veux juste savoir. Cela a-t-il un rapport avec l'un des états ACPI?
Ehtesh Choudhury
4
rundll32ne doit pas être utilisé pour appeler SetSuspendStatecar sa signature ne correspond pas à celle attendue par rundll32. Voir: support.microsoft.com/en-us/kb/164787 et msdn.microsoft.com/en-us/library/windows/desktop/… Le premier paramètre obtient garbage au lieu de FALSE. C'est la raison pour laquelle il hiberne au lieu de s'endormir.
SergeyT
Ne fonctionne pas sous Windows 10
T3rm1
@EhteshChoudhury, le problème dans ce cas-ci est que les paramètres Rundll32 sont incorrects et totalement inadaptés. Ils appellent donc SetSuspendState avec les paramètres suivants: Hibernate: TRUE, ForceCritical: TRUE, DisableWakeEvents: TRUE. La dernière partie explique pourquoi vous ne pouvez pas réveiller le PC avec autre chose que le bouton d'alimentation. Ce n’est qu’un hasard si essayer d’hiberner une fois désactivé a pour effet de mettre votre ordinateur en veille sous Win7, sans doute aussi pourquoi cela ne fonctionne pas pour certaines personnes.
SilverbackNet
10

NirCmd fonctionne sous Windows 8 (je suppose que cela fonctionne également avec Windows 7) → http://www.nirsoft.net/utils/nircmd.html
La commande est standby, mais met l'ordinateur en veille.

nircmd.exe standby

Si vous avez activé la veille hybride, cela fonctionnera; c'est-à-dire qu'il met l'ordinateur en veille et copie la mémoire sur le disque en cas de coupure de courant.

Eric L
la source
1
Cela fonctionne sans avoir à passer à l'administrateur. Fonctionne avec ou sans veille prolongée activée. Fonctionne comme prévu avec le sommeil hybride. Belle solution pour Win10.
dsmtoday
3

Voir l'utilitaire gratuit de Wizmo , qui peut faire beaucoup de choses.
La commande que vous recherchez est probablement:

Wizmo en veille

harrymc
la source
1
Wizmo a le même problème que rundll32.exe powrprof.dll,SetSuspendState 0,1,0- cela met l'ordinateur en veille hibernante et non en sommeil
Andomar
2
Non, depuis Vista, l'ordinateur est en veille hybride . Si vous ne le souhaitez pas, désactivez le mode veille hybride .
harrymc
1
Wizmo Blackout a fonctionné dans Windows 8.1, 10. GREAT !!!!!!!!!!!!!
YumYumYum
Wizmo fonctionne très bien. Malheureusement, mon scanner de virus d'entreprise le supprime car il contient des séquences qui font croire à mcafee qu'il contient un cheval de Troie .
Bastian
@bastian: Mcafee a toujours été une mauvaise nouvelle pour un auteur d’applications (d’expérience personnelle).
harrymc
3

J'ai créé un raccourci pour rundll32.exe powrprof.dll,SetSuspendState 0,1,0(également essayé avec 0,0,0), mais le raccourci semble mettre mon PC en veille prolongée. Je ne pouvais pas réveiller le PC en utilisant le clavier; J'ai dû appuyer sur le bouton d'alimentation, et le PC a montré les messages après la carte mère, etc.

Après avoir lu le document API Windows , j'ai créé un programme très simple avec seulement 3 lignes de frappe. J'ai téléchargé l'exécutable que j'ai compilé sur cette page (cliquez sur "SleepTest.exe") , mais ce fichier pourrait être supprimé après un certain temps (il s'agit d'un site d'hébergement de fichiers gratuit que j'ai trouvé par une recherche rapide dans Google).

Si vous ne me faites pas confiance (ce qui est totalement correct) ou si le fichier a été supprimé, vous pouvez compiler le code vous-même, bien sûr. Vous devez ajouter "PowrProf.lib" aux dépendances supplémentaires de l'éditeur de liens.

#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,0semble faire la même chose, mais d’une manière ou d’une autre, le programme ci-dessus n’a pas mis l’ordinateur en veille prolongée. Je pourrais réveiller le PC instantanément (pas de messages de la carte mère, etc.) en appuyant sur n’importe quelle touche du clavier.

Légumes maudits
la source
2

Vous pouvez lancer les options suspend ou hibernate à partir de la ligne de commande, comme indiqué ci-dessous et référencé dans cet article .

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

Si votre ordinateur est configuré pour autoriser l'hibernation, la commande ci-dessus lancera l'hibernation. Si la fonction de veille prolongée est désactivée, elle passera en état de veille. Comme d'autres utilisateurs ont répondu précédemment, shutdown.exe /?fournira de nombreuses options d'arrêt.

Diable bleu
la source
1
rundll32ne doit pas être utilisé pour appeler SetSuspendStatecar sa signature ne correspond pas à celle attendue par rundll32. Voir: support.microsoft.com/en-us/kb/164787 et msdn.microsoft.com/en-us/library/windows/desktop/… Le premier paramètre obtient garbage au lieu de FALSE, il est donc toujours en veille prolongée au lieu d'aller à dormir.
SergeyT
1

Vous devez d'abord désactiver Hibernate dans Windows, puis mettre l'ordinateur en état de veille . Utilisez les deux commandes suivantes:

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

et pour effectuer des actions inverses en mode Hibernation de l'ordinateur, utilisez les commandes ci-dessous:

powercfg -hibernate on
rundll32.exe powrprof.dll,SetSuspendState Hibernate
Mohsen Abasi
la source
3
rundll32n'est pas destiné à l'appel SetSuspendStateet ne doit pas être utilisé pour cela. Le premier paramètre obtient garbage au lieu de la valeur correcte. Donc, il hiberne toujours au lieu de dormir (si vous n’avez pas du tout désactivé l’hibernation).
SergeyT
@SergeyT Cela semble fonctionner pour moi (après avoir désactivé l'hibernation); Voulez-vous dire que cela va corrompre Windows?
Moondra
Cela corrompt la pile (car rundll32 attend une signature d'appel différente, de sorte qu'il supprime des éléments de la pile qui n'y ont pas été réellement placés). Cela conduit à un comportement inattendu.
imoatama
@imoatama belle découverte ...
masterxilo
1

Voici un article sur l'utilisation de la CLI pour arrêter.

Microsoft fournit PsTools qui vous permet d’arrêter la CLI avec d’autres outils utiles. Vous pouvez l'obtenir ici .

Wonton
la source
1

seul QUICK SLEEPER fonctionne pour moi (fonctionne sous Windows 7,8,10).

ps code source disponible ici .

T.Todua
la source
1
Y a-t-il une chance que vous puissiez fournir un lien vers le site réel à partir duquel vous avez obtenu le fichier? Le fait de se lier directement au fichier téléchargé, en particulier lorsque vous utilisez un raccourcisseur d'URL, peut donner l'impression que le fichier est particulièrement suspect, car il s'agit d'une tactique souvent utilisée par les auteurs de programmes malveillants.
Mokubai
ok, j'ai mis à jour le lien vers le site officiel.
T.Todua
1

Si vous avez Python (avec pywin32) disponible, vous pouvez également appeler cette fonction SetSuspendState directement avec:

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

Cela peut facilement être mis dans un fichier de commandes ou un raccourci comme:

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

Donc, si vos fichiers .py ne sont pas associés à l'interprète, vous pouvez simplement cliquer deux fois sur le lien.

dash-tom-bang
la source
1

La partie arrêt de la question est claire pour tout le monde.
shutdown.exe /?affiche tous les choix d'arrêter / redémarrer / options avancées de démarrage / démarrage du firmware.

Mais je vois tant de critiques sur la partie sommeil.
Tout le monde comprend qu'il rundll32.exene devrait pas être utilisé pour appeler des fonctions aléatoires et que cela fonctionne ici pour l'hibernation entièrement par hasard. Mais c’est la nature de Windows - une boîte noire dans laquelle les gens ont fouillé et trouvé des centaines de solutions de contournement pour faire un travail (crier aux dostips).

Il y a tellement de solutions " appropriées " proposant des outils externes , mais je n'arrive pas à trouver un script de lot natif (hybride / pinvoke / peu importe) , même si cette question est restée active au fil des ans.
Alors voici mon simple 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

Cela fonctionne même comme une grosse commande d'une ligne:

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
la source