web-dev-qa-db-fra.com

Dormir un ordinateur via un fichier batch sous Windows 7

Je veux faire un fichier de commandes qui dormira mon ordinateur après une période de temps.

La chose la plus proche que j'ai trouvée est de le placer en veille, mais semble fonctionner différemment du bouton de sommeil de mon clavier (démarrage plus long, ne réveille pas le clic de souris). Des idées? Serait-ce plus facile dans Python ou C #?

La technique moins idéale mentionnée ci-dessus l'appelle dans l'invite CMD:

Rundll32.exe powrprof.dll,SetSuspendState
14
Saebin

.NET à la rescousse. Cette solution met à votre disposition une ordinateur sans avoir besoin de changer de configuration PC (éteindre l'hibernation). Exécutez cette commande en lot:

powershell.exe -command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Application]::SetSuspendState([System.Windows.Forms.PowerState]::Suspend, $false, $false)"

Vous pouvez utiliser soit ::Suspend Pour dormir, ou ::Hibernate (quelle façon les autres réponses fonctionnent). Documentation pour setsuspendstate.

Comme System.Windows.Forms Espace de noms n'est pas chargé par défaut (il fait dans PowerShell Ise), vous devez charger l'assemblage pour cela au début.

Réponse originale

1
Velda

Créez simplement un fichier de commandes et insérez les lignes suivantes:

7200 = 2 hours

@echo off
timeout /t 7200 /nobreak
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
0
Chris Fischer

Vous pouvez essayer SetSystemPowerstate pour éviter de devoir désactiver Hiberanate.

rundll32.exe kernel32.dll, SetSystate

Notez que l'ajout de 1,0 ou 1 0 ou même de faire rundll32.exe powrprof.dll, Setsuspendstate 0 0 1 ou Rundll32.exe powrprof.dll, Setsuspendstate 0,0,1 que les arguments (0,0,1) ne signifient rien.

Le PowrProf.dll, Setsuspendstate n'utilise pas les arguments de style Rundll32 et les ignore donc. C'est pourquoi vous devez désactiver l'hibernate.

0
Rodney

Cette question a déjà été répondue.

powerCFG -H Off & Start/Min "" C:\Windows\System32\Rundll32.exe powrprof.dll, SeSuspendstate 0,1,0 & Ping -N 3 127.0.0.1> Nul & PowerCFG -H ON & SORTIE

Voir ce qui suit:

Quelle est la commande à utiliser pour mettre votre ordinateur pour dormir (pas hibernate)?

0
Josh