Поиск строки в выводе командной строки

Я хочу найти строку виртуальный "в атрибуте системной модели" команды sysinfo. Команда должна быть успешной, если "виртуальная" находится в системной модели : ------------------------- ' т.е. выход systeminfo. Он не должен искать "виртуальный" в целом вывод команды systeminfo, но должен делать только в атрибуте системной модели. Например, команда

systeminfo | findstr /i "system model" 

Я получу что-то вроде

System Model:              HP Compaq dc7800p Small Form Factor

в вышеприведенной строке вывода я хочу искать строку virtual и хочу манипулировать с использованием уровня ошибок. Поэтому, пожалуйста, помогите мне сделать это.

Следующим является тот, который я пробовал, который был неправильным. Или помогите мне, если я могу использовать регулярные выражения

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

Заранее спасибо

Ответ 1

Попробуйте следующее:

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 на других языках будут использоваться разные имена.