如何编写批处理文件以返回 WMIC 结果

And*_*huo 0 windows batch-file wmic

How do I write a batch file to return true if the manufacturer of the motherboard is ASUSTek COMPUTER INC. and return false if it's not using the wmic command?

The command is as below:

wmic baseboard get Manufacturer
Run Code Online (Sandbox Code Playgroud)

and it returns:

Manufacturer
ASUSTeK COMPUTER INC.
Run Code Online (Sandbox Code Playgroud)

and I only need to compare the string ASUSTeK COMPUTER INC..

asc*_*pfl 5

要捕获命令的输出,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
)
Run Code Online (Sandbox Code Playgroud)

for /F为了正确转换 Unicode 输出,需要两个嵌套循环wmic


但是,您也可以wmic直接过滤输出,如下所示:

wmic BaseBoard where "Manufacturer='ASUSTeK COMPUTER INC.'" get Manufacturer 2>&1 > nul | find /V "" > nul && (echo False) || (echo True)
Run Code Online (Sandbox Code Playgroud)

where子句进行过滤;如果未找到匹配项,则在STD_ERRNo Instance(s) Available.流上返回(句柄)。该表达式抑制STD_OUT流(handle )并将STD_ERR重定向STD_OUT,因此将接收它;当流不为空时,搜索表达式会找到匹配项。如果找到匹配则返回退出代码,否则返回;运算并检查退出代码并有条件地执行相应的命令。22>&1 > nul1 find/V ""find01 &&||echo