2012-09-17 16 views
10

chcę szukać napisu „wirtualny” w „model systemu” atrybut „sysinfo” polecenia. Polecenie powinno się powieść, jeśli w modelu systemowym "" znaleziono "wirtualny": -------------------------, tj. Wyjście z informacji systeminfo . Nie powinno szukać "wirtualnego" w całym wyniku polecenia systeminfo, ale powinno robić to tylko w atrybucie modelu systemowego. Na przykład poleceniaSzukaj ciąg w wyjściu linii poleceń

systeminfo | findstr /i "system model" 

dostanę coś takiego

System Model:    HP Compaq dc7800p Small Form Factor 

w powyższym wierszu wyjścia Chcę wyszukać ciąg wirtualny, i chcą manipulować przy użyciu ERRORLEVEL. Więc proszę, pomóż mi to zrobić.

Oto, który próbowałem, który nie był prawidłowy. Albo mi pomóc, jeśli mogę użyć wyrażeń regularnych

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

z góry dzięki

Odpowiedz

9

Spróbuj tego:

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

Przetestowałem w sprawie systemu rzeczywistym i wirtualnym i działa dobrze na WinXp i Win7. Należy pamiętać, że ciąg system model jest używany tylko w angielskich wersjach systemu Windows. Wersje systemu Windows w innych językach będą używały innych nazw.

+1

to znajdzie dowolny plik, który zaczyna się od "system" lub "model". Aby wyszukać ciąg "model systemu" użyj 'findstr/i/b/C:" model systemu "' (nie ma problemu w tym szczególnym przypadku, ponieważ nie ma linii w 'systeminfo', która zaczyna się od" Model ") – Stephan

+0

@ Stephan masz rację! Działa teraz, ale może być problemem w przyszłości, jeśli system Windows zmieni informacje generowane przez systeminfo. Dodam/C: do mojej odpowiedzi. Dzięki za wzmiankę o tym! – THelper