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

Windows 在命令行输出中搜索字符串,windows,batch-file,command,prompt,Windows,Batch File,Command,Prompt,我想在“sysinfo”命令的“系统模型”属性中搜索字符串“virtual”。如果在的“系统模型:----------------------------”中找到“虚拟”,即systeminfo的输出,则该命令应成功。它不应该在systeminfo命令的整个输出中搜索“virtual”,而应该只在系统模型属性中搜索。 例如,命令 systeminfo | findstr /i "system model" 我会得到类似的东西 System Model: HP Com

我想在“sysinfo”命令的“系统模型”属性中搜索字符串“virtual”。如果在的“系统模型:----------------------------”中找到“虚拟”,即systeminfo的输出,则该命令应成功。它不应该在systeminfo命令的整个输出中搜索“virtual”,而应该只在系统模型属性中搜索。 例如,命令

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
)
提前感谢

试试这个:

systeminfo | findstr/I/B/C:“系统模型”| findstr/I“虚拟”
如果%errorlevel%==0(
回声虚拟机
)否则(
回声真机
)
我在真实和虚拟系统上进行了测试,它在WinXp和Win7上运行良好。
请注意,
系统型号
字符串仅在英文Windows版本中使用。其他语言的Windows版本将使用不同的名称。

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