Por que não salva o número 2?
Se você executar o seguinte comando em um cmd
shell:
WMIC Path Win32_Battery Get BatteryStatus
A saída normalmente será:
F:\test>WMIC Path Win32_Battery Get BatteryStatus
BatteryStatus
2
F:\test>
Como mostra a saída acima, wmic
produz uma linha em branco adicional.
Para linhas em branco, %%A
será uma string vazia e BatteryStatus
será indefinido.
A correção mais fácil é canalizar |
da saída de wmic
para findstr /r /v "^$"
, o que tira todas as linhas em branco.
Arquivo em lote corrigido (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
)
Saída com echo
ativada:
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
)
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- findstr - Pesquise strings em arquivos.
- para / f - Comando Loop contra os resultados de outro comando.
- wmic - Comando de instrumentação de gerenciamento do Windows.