Também está ecoando outra coisa porque dá uma echo is off
Isso ocorre porque wmic
é (mal escrito e) produz uma linha em branco no final da saída.
Você pode usar findstr /r /v "^$"
para remover a linha em branco.
Usando um arquivo em lotes:
@echo off
setlocal
for /f "usebackq skip=1 tokens=*" %%i in ('wmic computersystem get workgroup ^| findstr /r /v "^$"') do set myVar=%%i
echo %myVar%
endendlocal
Usando uma linha de comando:
for /f "usebackq skip=1 tokens=*" %i in ('wmic computersystem get workgroup ^| findstr /r /v "^$" ^| findstr /r /v "^$"') do @set myVar=%i && echo %myVar%
Notas:
-
for /f
faz um loop na saídawmic
. -
skip=1
ignora a linha de cabeçalho (contendoVariableValue
) -
findstr /r /v "^$"
remove a linha em branco final da saídawmic
.
Exemplo de saída:
> wmic computersystem get workgroup
Workgroup
WORKGROUP
> for /f "usebackq skip=1 tokens=*" %i in ('wmic computersystem get workgroup ^| findstr /r /v "^$" ^| findstr /r /v "^$"') do @set myVar=%i && echo %myVar%
WORKGROUP
>
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.