Как написать командный файл для возврата результата WMIC - PullRequest
0 голосов
/ 25 июня 2018

Как мне написать командный файл, чтобы он возвращал true, если производитель материнской платы равен ASUSTek COMPUTER INC., и возвращает false, если он не использует команду wmic?

Команда выглядит следующим образом:

wmic baseboard get Manufacturer

и возвращает:

Manufacturer
ASUSTeK COMPUTER INC.

, и мне нужно только сравнить строку ASUSTeK COMPUTER INC..

1 Ответ

0 голосов
/ 25 июня 2018

Чтобы получить выходные данные команды 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...