我正在尝试编写一个批次,该批次将被分配到笔记本电脑上的一个特殊按钮,希望它可以在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比较似乎没有按预期工作。我在这里缺少什么?
答案 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
)