Вы set Battery.%%A
, который ничего не установит, если честно, также вы никогда не определяли переменную %Battery.PowerOnline%
, поэтому она никогда не вернет true.Нам действительно нужно проверять каждый статус?Только последняя set
из ваших трех команд сохранит значение переменной, поэтому лучше проверьте значение основного poweronline и сделайте что-нибудь оттуда.Обратите внимание, как я устанавливаю переменные:
@echo off
for /F "tokens=* delims=" %%A IN ('WMIC /NameSpace:"\\root\WMI" Path BatteryStatus Get PowerOnline /Format:list ^| FIND "PowerOnline"') DO SET "Battery=%%A" & goto :verify
:verify
if /I "%Battery%"=="PowerOnline=TRUE" (
set doShutDown=0
) else (
set doShutDown=1
)