用于更改电源配置文件的批处理文件



此处为首次海报。我正试图制作一个快速脚本,根据我的笔记本电脑是否插上电源,在省电和高性能电源模式之间切换。我在谷歌上搜索了一下,找到了这个,所以我试图修改它以满足我的需求。然而,IF声明似乎有一个问题,出于某种原因,我无法运行它,我无法理解。单独运行checker函数效果很好。很高兴得到任何帮助。代码包含在下面。(供参考,if OnLine = true,然后将设备插入电源(

@echo on
call :checker OnLine
if OnLine==true( powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c) else (powercfg /s e2ba9cbc-ad70-403c-8810-530a59af2d53)
pause
:checker 
set OnLine=false
set cmd=WMIC /NameSpace:\rootWMI Path BatteryStatus Get PowerOnline
%cmd% | find /i "true" > nul && set %~OnLine=true
echo %OnLine%
EXIT /B 0

有很多问题,比如true和左括号之间缺少空格,以及您没有在%中使用变量名,但不管怎样,即使我们修复了它们,也不会起作用,因为从来没有给变量赋值。

这应该是你想要的。

@echo off
WMIC /NameSpace:\rootWMI Path BatteryStatus Get PowerOnline | findstr /i "TRUE" >nul && (echo powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c & echo online)
if %errorlevel% equ 1 (echo powercfg /s e2ba9cbc-ad70-403c-8810-530a59af2d53 & echo OffLine)

如果您希望echo联机或脱机,这是一个稍长的解决方案版本。

WMIC /NameSpace:\rootWMI Path BatteryStatus Get PowerOnline | findstr /I "TRUE"
if %errorlevel% equ 0 (
echo Online
powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
) else (
echo Offline
powercfg /s e2ba9cbc-ad70-403c-8810-530a59af2d53
)

只是向你展示你的解决方案在修复后的样子:

@echo off
set onLine=
set mycmd=WMIC /NameSpace:\rootWMI Path BatteryStatus Get PowerOnline
%mycmd% | findstr /i "TRUE"> nul && set onLine=true
echo %onLine%
if "%onLine%" == "true" (
powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
) else (
powercfg /s e2ba9cbc-ad70-403c-8810-530a59af2d53
)
exit /B 0

要更好地理解以上命令,请打开cmd并键入以下内容以读取其帮助文件。

for /?
if /?
findstr /?

最新更新