制作一个识别有效电源计划的批次并进行更改

时间:2016-08-03 08:36:01

标签: windows batch-file

我正在尝试编写一个批次,该批次将被分配到笔记本电脑上的一个特殊按钮,希望它可以在Balanced和Power-saver电源计划之间切换。因此,我希望它能够识别其中一个当前是否处于活动状态并激活另一个。

我一直在寻找示例,我对Windows批处理的理解就是这个非工作尝试:

for /f "delims=" %a in ('powercfg -getactivescheme') do @set var=%a
if "%var%"=="Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (Balanced)" (
    powercfg -s a1841308-3541-4fab-bc81-f71556f20b4a
) else  (
    if "%var%"=="Power Scheme GUID: a1841308-3541-4fab-bc81-f71556f20b4a (Power saver)" (
        powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e
    )
)

我正在尝试逐行执行这些行,但if比较似乎没有按预期工作。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

只需一行的替代解决方法

for /f "delims=" %a in ('powercfg -getactivescheme') do echo %a | find /i "balanced" > nul && powercfg -s a1841308-3541-4fab-bc81-f71556f20b4a || powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e

如果您打算在两种状态之间切换,它会起作用。

  

注意:这适用于命令行上下文。包含在批处理文件中   上下文将%a 更改为 %% a

     

&安培;&安培;运算符表示上一个命令成功

     

||运算符表示上一个命令失败

所以回显%a |找/我"平衡" > nul 搜索关键字 balanced ,如果为true,则在&&之后执行命令,否则在||之后执行命令。

编辑:需要进行细微更改。你有你所需要的一切......

@echo off
for /f "delims=" %%a in ('powercfg -getactivescheme') do (
  echo %%a | find /i "performance" > nul && exit/B
  echo %%a | find /i "balanced" > nul && powercfg -s a1841308-3541-4fab-bc81-f71556f20b4a || powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e
)