如果主板的制造商是ASUSTek COMPUTER INC.
,如何编写批处理文件以返回 true,如果不使用该wmic
命令,则返回 false ?
命令如下:
wmic baseboard get Manufacturer
它返回:
Manufacturer ASUSTeK COMPUTER INC.
我只需要比较字符串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
)
这两个嵌套for /F
循环是正确转换 Unicodewmic
输出所必需的。
但是,您也可以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
contitionally命令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句