Почему не сохранить номер 2?
Если вы выполните следующую команду в командной оболочке cmd :
WMIC Path Win32_Battery Get BatteryStatus
Вывод обычно будет:
F:\test>WMIC Path Win32_Battery Get BatteryStatus
BatteryStatus
2
F:\test>
Как показано выше, wmic выводит дополнительную пустую строку.
Для пустых строк %%A будет пустой строкой, а BatteryStatus будет неопределенным.
Самый простой способ исправить это | вывод wmic для findstr /r /v "^$" который удалит все пустые строки.
Исправленный пакетный файл (test.cmd):
@ECHO OFF
FOR /F "skip=1 tokens=1" %%A in ('WMIC Path Win32_Battery Get BatteryStatus ^| findstr /r /v "^$"') DO SET BatteryStatus=%%A
IF "%BatteryStatus%"=="1" (
taskkill /im DMT.exe
taskkill /im AudioSwitcher.exe
)
Выход с включенным echo :
F:\test>test
F:\test>rem @ECHO OFF
F:\test>FOR /F "skip=1 tokens=1" %A in ('WMIC Path Win32_Battery Get BatteryStatus | findstr /r /v "^$"') DO SET BatteryStatus=%A
F:\test>SET BatteryStatus=2
F:\test>IF "2" == "1" (
taskkill /im DMT.exe
taskkill /im AudioSwitcher.exe
)
Дальнейшее чтение