2012-09-17 4 views
10

I für die Zeichenfolge „virtuelle“ in „Systemmodell“ Attribute ‚sysinfo‘ Befehl gesucht werden soll. Der Befehl sollte erfolgreich sein, wenn 'virtual' im 'Systemmodell gefunden wird: -------------------------' dh Ausgabe der Systeminfo . Es sollte nicht in der gesamten Ausgabe des Befehls systeminfo nach 'virtual' suchen, sondern nur im Systemmodellattribut. Zum Beispiel der BefehlSuche nach einer Zeichenkette in der Befehlszeile Ausgabe

systeminfo | findstr /i "system model" 

werde ich so etwas wie

System Model:    HP Compaq dc7800p Small Form Factor 

in der oberen Zeile des Ausgangs ich will bekommen für String virtuellen suchen, und wollen mit Errorlevel manipulieren. Also bitte hilf mir dabei.

Folgendes ist die, die ich versuchte, die nicht korrekt war. Oder mir helfen, wenn ich die reguläre Ausdrücke

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

Vielen Dank im Voraus

Antwort

9

Versuchen verwenden:

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

Ich habe auf einem reales und virtuelles System getestet und es funktioniert auf Fein WinXp und Win7. Beachten Sie, dass der String system model nur in englischen Windows-Versionen verwendet wird. Windows-Versionen in anderen Sprachen verwenden einen anderen Namen.

+1

Dies findet jede Datei, die mit "System" ODER "Modell" beginnt. Um nach der Zeichenkette "Systemmodell" zu suchen, benutzen Sie 'findstr/i/b/C:" Systemmodell "' (kein Problem in diesem speziellen Fall, da es keine Zeile in 'systeminfo' gibt, die mit" Model "beginnt) – Stephan

+0

@ Stephan du hast Recht! Es funktioniert jetzt, könnte aber in Zukunft ein Problem darstellen, wenn Windows die von systeminfo generierten Informationen ändert. Ich füge das/C zu meiner Antwort hinzu. Danke für's Erwähnen! – THelper