批处理文件检测并设置Windows 7电源模式


4

我想创建一个批处理文件,检查当前系统电源模式并在必要时进行更改。我有以下内容。我究竟做错了什么?(这是行不通的)

@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"

)

谢谢您的帮助。


2
认为更改电源配置文件需要管理员权限,您是否尝试以管理员身份运行批处理文件?
HaydnWVN

@HaydnWVN是的,即使有管理员权限,文件也会立即执行并关闭窗口。即使我将PAUSE调用放在IF语句中以及之后也是如此。
Kovo

那么PAUSE之前IF还是会导致它关闭吗?!
HaydnWVN

不,在IF之前,Pause按预期工作。
Kovo

Answers:


3

根据我对批处理文件脚本的经验,即使你有一个应该被击中的PAUSE它也会退出,这意味着有一个错误导致它崩溃。在这种情况下,我认为这是一些语法问题,以及如何设置变量。我玩了一遍,让它工作:

@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"

“For / f ...”行通常是我用来将另一个命令的输出变为变量的命令。它通常用于解析更复杂的响应,但在这种情况下它会处理-GETACTIVE命令。有关for循环语法(或一般的批处理语法)的更多信息:http//ss64.com/nt/for_f.html


这就像一个魅力。非常感谢你。
Kovo

1
没问题。使用命令行处理字符串和命令输出时遇到了很多问题。有时奇怪的使用引号(例如,在轮询命令时使用的变量附近引用)原始代码虽然逻辑上合理,但是当我使用它时,会将命令作为字符串放入变量而不是返回。
大卫M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.