Существует множество проблем, таких как отсутствие пробелов между истиной и открывающей скобкой, а также тот факт, что вы не использовали имена переменных с %
, но независимо от того, даже если мы их исправим, это не сработает, потому что не получится никакого значения присваивается переменной.
Это должно делать то, что вы хотите.
@echo off
WMIC /NameSpace:\\root\WMI 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:\\root\WMI 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:\\root\WMI 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 /?