2012-09-17 20 views
10

voglio cercare la stringa "virtuale" in "modello di sistema" attributo del comando 'sysinfo'. Il comando dovrebbe avere successo se 'virtuale' si trova nel modello di sistema : ------------------------- ' ie output di systeminfo . Non dovrebbe cercare "virtuale" nell'intero output del comando systeminfo, ma dovrebbe fare solo nell'attributo del modello di sistema. Per esempio il comandoCerca una stringa in uscita di linea di comando

systeminfo | findstr /i "system model" 

mi metterò qualcosa come

System Model:    HP Compaq dc7800p Small Form Factor 

nella riga sopra dell'uscita voglio cercare stringhe virtuale, e vogliono manipolare usando errorlevel. Quindi, per favore aiutami a fare questo.

Di seguito è riportato quello che ho provato e che non era corretto. o aiutarmi, se posso usare le espressioni regolari

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

grazie in anticipo

risposta

9

Prova questo:

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

ho testato su un sistema reale e virtuale e funziona bene su WinXp e Win7. Si noti che la stringa system model viene utilizzata solo nelle versioni inglesi di Windows. Le versioni di Windows in altre lingue usano nomi diversi.

+1

questo trova qualsiasi file, che inizia con "system" OR "model". Per cercare la stringa "modello di sistema" usa 'findstr/i/b/C:" modello di sistema "' (nessun problema in questo caso speciale, perché non c'è alcuna riga in 'systeminfo' che inizia con" Modello ") – Stephan

+0

@ Stephan hai ragione! Funziona in questo momento, ma potrebbe essere un problema in futuro se Windows cambia le informazioni generate da systeminfo. Aggiungerò il/C: alla mia risposta. Grazie per averlo menzionato! – THelper

Problemi correlati