Чтобы получить выходные данные команды wmic
, используйте for /F
:
set "BOARD="
for /F "skip=1 delims=" %%I in ('
wmic BaseBoard get Manufacturer
') do (
for /F "delims=" %%J in ("%%I") do (
set "BOARD=%%J"
)
)
rem // Compare retrieved string:
if /I "%BOARD%"=="ASUSTeK COMPUTER INC." (
echo True
) else (
echo False
)
Два вложенных цикла for /F
необходимы для правильного преобразования вывода Unicode wmic
.
Однако вы также можете напрямую фильтровать вывод wmic
, например:
wmic BaseBoard where "Manufacturer='ASUSTeK COMPUTER INC.'" get Manufacturer 2>&1 > nul | find /V "" > nul && (echo False) || (echo True)
Предложение where
выполняет фильтрацию; если совпадение не найдено, No Instance(s) Available.
возвращается в потоке STD_ERR (дескриптор 2
). Выражение 2>&1 > nul
подавляет поток STD_OUT (дескриптор 1
) и перенаправления STD_ERR в STD_OUT вместо этого, поэтому find
собирается получить его; поисковое выражение /V ""
находит совпадение, когда поток не пустой. find
возвращает код выхода 0
, если совпадение найдено, и 1
в противном случае; операторы &&
и ||
проверяют код выхода и последовательно выполняют соответствующую команду echo
.