Fichier de commandes pour détecter et définir le mode d'alimentation de Windows 7

4

Je souhaite créer un fichier de commandes qui vérifie le mode d'alimentation actuel du système et le modifie si nécessaire. J'ai le suivant. Qu'est-ce que je fais mal? (ça ne marche pas)

@ECHO OFF

SET _CURRENT_POWER_SCHEME = POWERCFG -GETACTIVESCHEME

IF NOT %_CURRENT_POWER_SCHEME% == "Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e  (Balanced)"(
    POWERCFG -SETACTIVE "381b4222-f694-41f0-9685-ff5bb260df2e"

)

Merci pour l'aide.

Kovo
la source
2
Vous pensez que modifier le profil d'alimentation requiert des privilèges d'administrateur? Avez-vous essayé d'exécuter le fichier de commandes en tant qu'administrateur?
HaydnWVN
@HaydnWVN Oui, même avec des privilèges d'administrateur, le fichier s'exécute et ferme la fenêtre immédiatement. Même si je place des appels PAUSE à l'intérieur de l'instruction IF et après celle-ci.
Kovo
Donc, un PAUSEavant le IFreste provoque qu'il soit fermé?!
HaydnWVN
Non, avant la FI, la pause fonctionne comme prévu.
Kovo

Réponses:

3

D'après mon expérience en matière de script de fichiers de traitement par lots, si cela se produit même si vous avez une pause qui devrait être touchée, cela signifie qu'une erreur l'a provoqué. Dans ce cas, je pense que ce sont quelques problèmes de syntaxe, ainsi que la manière dont vous définissez la variable. J'ai joué et j'ai réussi à faire fonctionner ça:

@ECHO off
FOR /f "delims=" %%a in ('POWERCFG -GETACTIVESCHEME') DO @SET _CURRENT_POWER_SCHEME="%%a"
IF NOT %_CURRENT_POWER_SCHEME%=="Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e  (Balanced)" POWERCFG -SETACTIVE "381b4222-f694-41f0-9685-ff5bb260df2e"

La ligne "For / f ..." est généralement la commande que j'utilise pour obtenir le résultat d'une autre commande dans une variable. C'est normalement pour analyser des réponses plus complexes, mais il gère la commande -GETACTIVE dans ce cas. Pour plus d'informations sur la syntaxe de boucle for (ou la syntaxe de batch en général): http://ss64.com/nt/for_f.html

David M
la source
Cela a fonctionné comme un charme. Merci beaucoup.
Kovo
1
Aucun problème. J'ai eu beaucoup de problèmes avec les chaînes et les sorties de commande en ligne de commande. Parfois, il est étrange d’utiliser des guillemets (placer des guillemets autour de la variable utilisée dans la scrutation de la commande, par exemple). revenir.
David M