web-dev-qa-db-ja.com

コマンドライン出力で文字列を検索します

'sysinfo'コマンドの "system model"属性で文字列 "virtual"を検索したい。 'システムモデル:-------------------------'に 'virtual'が見つかった場合、コマンドは成功するはずです。つまり、systeminfoの出力。 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
)

前もって感謝します

14
Ramesh

これを試して:

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バージョンでは別の名前が使用されます。

13
THelper