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

时间:2012-09-17 05:48:28

标签: windows batch-file command prompt

我想搜索字符串" 虚拟"在" 系统模型"属性' sysinfo '命令。如果虚拟'该命令应该是成功的。可以在'系统模型中找到:-------------------------' 即输出systeminfo。它不应该搜索虚拟'在systeminfo命令的整个输出中,但只应在系统模型属性中执行。 例如命令

systeminfo | findstr /i "system model" 

我会得到像

这样的东西
System Model:              HP Compaq dc7800p Small Form Factor

在输出的上一行我想搜索字符串虚拟,并希望使用errorlevel进行操作。所以请帮我这样做。

以下是我尝试的那个不正确的。 或者如果我可以使用正则表达式帮助我

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

提前致谢

1 个答案:

答案 0 :(得分:13)

试试这个:

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版本将使用不同的名称。