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:
Run Code Online (Sandbox Code Playgroud)Manufacturer ASUSTeK COMPUTER INC.
and I only need to compare the string ASUSTeK COMPUTER INC..
要捕获命令的输出,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