2015-12-07 33 views
-1

我在命令行中運行systeminfo命令來獲取系統信息。 我只需要其中的一些,而不是每一件事。我如何使用正則表達式來提取信息?如何使用正則表達式在分號後提取systeminfo中的信息?

編輯:我正在使用LabView,它使用Perl Compatible Regular Expressions(http://www.pcre.org/)。

我只需要以下信息
NameOfTheHost (Hostname:)
Microsoft Windows 8.1 Pro (Betriebssystemname:)
07.12.2015, 07:54:09 (Systemstartzeit:)
1 and [01]: Intel64 Family 6 Model 60 Stepping 3 GenuineIntel ~2501 MHz (Prozessor(en):)
username (Registrierter Benutzer:)
8.105 MB (Gesamter physischer Speicher:)
3.315 MB (Verfügbarer physischer Speicher:)
8.105 MB (Virtueller Arbeitsspeicher: Maximale Größe:)
2.485 MB (Virtueller Arbeitsspeicher: Verfügbar:)
5.620 MB (Virtueller Arbeitsspeicher: Zurzeit verwendet:)

我的命令系統的系統信息給出以下文字:

Hostname:          NameOfTheHost 
Betriebssystemname:       Microsoft Windows 8.1 Pro 
Betriebssystemversion:       6.3.9600 Nicht zutreffend Build 9600 
Betriebssystemhersteller:      Microsoft Corporation 
Betriebssystemkonfiguration:     Mitglied der Domäne/Arbeitsgruppe 
Betriebssystem-Buildtyp:      Multiprocessor Free 
Registrierter Benutzer:      username 
Registrierte Organisation: 
Produkt-ID:         0000-0000-0000 
Ursprüngliches Installationsdatum:    01.01.2010, 13:41:25 
Systemstartzeit:        07.12.2015, 07:54:09 
Systemhersteller:        Hewlett-Packard 
Systemmodell:         HP ProBook 650 G1 
Systemtyp:          x64-based PC 
Prozessor(en):         1 Prozessor(en) installiert. 
               [01]: Intel64 Family 6 Model 60 Stepping 3 GenuineIntel ~2501 MHz 
BIOS-Version:         Hewlett-Packard L77 Ver. 01.05, 29.04.2014 
Windows-Verzeichnis:       C:\Windows 
System-Verzeichnis:       C:\Windows\system32 
Startgerät:         \Device\HarddiskVolume1 
Systemgebietsschema:       de-at;Deutsch (Österreich) 
Eingabegebietsschema:       de;Deutsch (Deutschland) 
Zeitzone:          (UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien 
Gesamter physischer Speicher:     8.105 MB 
Verfügbarer physischer Speicher:    3.315 MB 
Virtueller Arbeitsspeicher: Maximale Größe: 8.105 MB 
Virtueller Arbeitsspeicher: Verfügbar:   2.485 MB 
Virtueller Arbeitsspeicher: Zurzeit verwendet: 5.620 MB 
Auslagerungsdateipfad(e):      Nicht zutreffend 
Domäne:          domainname.local 
Anmeldeserver:         \\loginserver 
Hotfix(es):         148 Hotfix(e) installiert. 
               [01]: KB2899189_Microsoft-Windows-CameraCodec-Package 
               [02]: KB000000 
               [03]: KB000000 
               ..... /* shortened */ 
               [148]: KB000000 
Netzwerkkarte(n):        3 Netzwerkadapter installiert. 
               [01]: Bluetooth-Gerät (PAN) 
                Verbindungsname: Bluetooth-Netzwerkverbindung 3 
                Status:   Medien getrennt 
               [02]: Intel(R) Ethernet-Verbindung I217-V 
                Verbindungsname: Ethernet 2 
                DHCP aktiviert: Ja 
                DHCP-Server:  10.0.0.1 
                IP-Adresse(n) 
                [01]: 10.0.0.10 
                [02]: 0000::0000:0000:0000:0000 
               [03]: Broadcom BCM943228HMB 802.11abgn 2x2 Wi-Fi Adapter 
                Verbindungsname: WiFi 2 
                DHCP aktiviert: Ja 
                DHCP-Server:  10.0.0.10 
                IP-Adresse(n) 
                [01]: 10.0.0.11 
                [02]: 0000::0000:0000:0000:0000 
Anforderungen für Hyper-V:      Erweiterungen für den VM-Überwachungsmodus: Ja 
               Virtualisierung in Firmware aktiviert: Nein 
               Adressübersetzung der zweiten Ebene: Ja 
               Datenausführungsverhinderung verfügbar: Ja 

回答

1

你真的需要給我們介紹一下您要使用或用什麼語言正則表達式的味道更多的細節。假設你想在C#中使用它這裏是你如何會遍歷所有匹配:

try { 
    Regex regexObj = new Regex(@"([^:]*):\s*(.*)"); 
    Match matchResults = regexObj.Match(subjectString); 
    while (matchResults.Success) { 
     // matched text: matchResults.Value 
     // match start: matchResults.Index 
     // match length: matchResults.Length 
     matchResults = matchResults.NextMatch(); 
    } 
} catch (ArgumentException ex) { 
    // Syntax error in the regular expression 
} 

然後,您可以檢查一下,你想要哪個。但說實話,我不會使用正則表達式來完成這個任務。由於您只需要列表中的幾個已知條目,請遍歷這些行並檢查這些行是否以例如。 「主機名:」,如果是的話,請把剩下的字符串。

沒有進一步的細節,我們將無法給你一個更準確的答案。

+0

我使用LabView,它使用Perl Compatible Regular Expressions(http://www.pcre.org/)。 –

+0

在Perl中,上面的正則表達式是while($ subject =〜m /([^:] *):\ s *(。*)/ g){matching text = $& } – Sascha

相關問題