在命令行输出中搜索字符串

20
我想在'sysinfo'命令的"系统型号"属性中搜索字符串"虚拟"。如果在系统信息的输出'系统型号:-------------------------' 中找到了'虚拟',则该命令将成功。它不应该在整个systeminfo命令的输出中搜索'虚拟',而应该只在系统型号属性中进行搜索。 例如,该命令
systeminfo | findstr /i "system model" 

我将获得类似的东西

System Model:              HP Compaq dc7800p Small Form Factor

在输出的上述行中,我想搜索字符串“virtual”,并希望使用errorlevel进行操作。请帮助我完成这个任务。

以下是我尝试过但不正确的代码。或者请告诉我是否可以使用正则表达式。

systeminfo | findstr /i /R  "system model: virtual machine" > nul
if %errorlevel% == 0 (
   echo virtual machine
) ELSE (
   echo physical machine
)

提前感谢您

1个回答

17

试一下这个:

systeminfo | findstr /I /B /C:"system model" | findstr /I "virtual"
if %errorlevel% == 0 (
    echo virtual machine
) else (
    echo real machine
)

我已经在真实和虚拟系统上进行了测试,并且在WinXp和Win7上表现良好。 请注意,system model字符串仅在英文Windows版本中使用。其他语言的Windows版本将使用不同的名称。


3
这段程序相关的内容翻译成中文如下:这会找到任何以“system”或“model”开头的文件。要搜索字符串“system model”,请使用findstr /i /b /C:"system model"(在这种特殊情况下没有问题,因为systeminfo中没有以“Model”开头的行)。 - Stephan
@Stephan,你说得对!现在它可以工作了,但是如果Windows更改了systeminfo生成的信息,将来可能会出现问题。我会在我的答案中添加/C:。谢谢你提醒我! - THelper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接