1

これは私のコードです。

@ECHO OFF
systeminfo > C:\SystemInfo1.txt

findstr /C:"OS Name:" /C:"OS Version:" /C:"OS Manufacturer:" /C:"Original Install Date:" /C:"System Boot Time:" /C:"System Manufacturer:" /C:"System Model:" /C:"System Type:" /C:"Processor(s):" /C:"System Locale:" /C:"Input Locale:" /C:"Time Zone:" /C:"NetWork Card"  C:\SystemInfo1.txt > c:\SystemInfo.txt

DEL C:\SystemInfo1.txt

c:\SystemInfo.txt
EXIT

このコードが行うことは、ネットワーク カードの詳細が表示されている最後にシステム情報ファイルが表示されている場合、テキスト ファイル 'Systeminfo1.txt' から必要な選択されたコンテンツのみを表示することです。しかし、このコードでは最初の行しか得られません。

実際のシステム情報:

Host Name:                 BLRPN0W01085
OS Name:                   Microsoft Windows XP Professional
OS Version:                5.1.2600 Service Pack 3 Build 2600
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Member Workstation
OS Build Type:             Uniprocessor Free
Registered Owner:          Admin
Registered Organization:   Thomson Reuters
Original Install Date:     8/31/2011, 10:46:03 AM
System Up Time:            0 Days, 10 Hours, 19 Minutes, 2 Seconds
System Manufacturer:       Dell Inc.
System Model:              OptiPlex 755                 
System type:               X86-based PC
Processor(s):              1 Processor(s) Installed.
                       [01]: x86 Family 6 Model 23 Stepping 6 GenuineIntel ~2992 Mhz
BIOS Version:              DELL   - 15
Windows Directory:         C:\WINDOWS
System Directory:          C:\WINDOWS\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             en-us;English (United States)
Input Locale:              en-us;English (United States)
Time Zone:                 (GMT) Casablanca
Total Physical Memory:     2,014 MB
Available Physical Memory: 772 MB
Virtual Memory: Max Size:  2,048 MB
Virtual Memory: Available: 2,008 MB
Virtual Memory: In Use:    40 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    tfcorp.tfn.com
Logon Server:              \\INKABAN1DIR01
Hotfix(s):                 319 Hotfix(s) Installed.
                       [01]: File 1
                       [02]: File 1
                       [03]: File 1
                       [04]: File 1
                       [05]: File 1
                       [06]: File 1
                       [07]: File 1
                       [08]: File 1
                       [09]: File 1
                       [10]: File 1
                       [11]: File 1
                       [12]: File 1
                       [13]: File 1
                       [14]: File 1
                       [15]: File 1
                       [16]: File 1
                       [17]: File 1
                       [18]: File 1
                       [19]: File 1
                       [20]: File 1
                       [21]: File 1
                       [22]: File 1
                       [23]: File 1
                       [24]: File 1
                       [25]: File 1
                       [26]: File 1
                       [27]: File 1
                       [28]: File 1
                       [29]: File 1
                       [30]: File 1
                       [31]: File 1
                       [32]: File 1
                       [33]: File 1
                       [34]: File 1
                       [35]: File 1
                       [36]: File 1
                       [37]: File 1
                       [38]: File 1
                       [39]: File 1
                       [40]: File 1
                       [41]: File 1
                       [42]: File 1
                       [43]: File 1
                       [44]: File 1
                       [45]: File 1
                       [46]: File 1
                       [47]: File 1
                       [48]: File 1
                       [49]: File 1
                       [50]: File 1
                       [51]: File 1
                       [52]: File 1
                       [53]: File 1
                       [54]: File 1
                       [55]: File 1
                       [56]: File 1
                       [57]: File 1
                       [58]: File 1
                       [59]: File 1
                       [60]: File 1
                       [61]: File 1
                       [62]: File 1
                       [63]: File 1
                       [64]: File 1
                       [65]: File 1
                       [66]: File 1


NetWork Card(s):           1 NIC(s) Installed.
                        [01]: Intel(R) 82566DM-2 Gigabit Network Connection
                              Connection Name: Local Area Connection
                              DHCP Enabled:    Yes
                              DHCP Server:     10.136.193.51
                              IP address(es)
                              [01]: 10.136.208.125

私のコードが表示するもの:

OS Name:                   Microsoft Windows XP Professional
OS Version:                5.1.2600 Service Pack 3 Build 2600
OS Manufacturer:           Microsoft Corporation
Original Install Date:     8/31/2011, 10:46:03 AM
System Manufacturer:       Dell Inc.
System Model:              OptiPlex 755                 
Processor(s):              1 Processor(s) Installed.
BIOS Version:              DELL   - 15
System Locale:             en-us;English (United States)
Input Locale:              en-us;English (United States)
Time Zone:                 (GMT) Casablanca
NetWork Card(s):           1 NIC(s) Installed.

何が欠けている:

[01]: Intel(R) 82566DM-2 Gigabit Network Connection
                                 Connection Name: Local Area Connection
                                 DHCP Enabled:    Yes
                                 DHCP Server:     10.136.193.51
                                 IP address(es)
                                 [01]: 10.136.208.125

どうすれば何が足りないのですか? ところで、BIOS が「DELL - 15」と表示される理由を知っている人はいますか?? これはXPのみです。

4

3 に答える 3

2

どうぞ:

@ECHO OFF
systeminfo >c:\SystemInfo1.txt

findstr /C:"OS Name:" /C:"OS Version:" /C:"OS Manufacturer:" /C:"Original Install Date:" /C:"System Boot Time:" /C:"System Manufacturer:" /C:"System Model:" /C:"System Type:" /C:"Processor(s):" /C:"System Locale:" /C:"Input Locale:" /C:"Time Zone:" /C:"NetWork Card" c:\SystemInfo1.txt >c:\SystemInfo.txt

for /f "tokens=1 delims=:" %%a in ('findstr /n "NetWork Card" c:\SystemInfo1.txt') do set line=%%a & goto remainder

:remainder
more +%line% c:\SystemInfo1.txt >>c:\SystemInfo.txt

DEL C:\SystemInfo1.txt
c:\SystemInfo.txt
EXIT /b

NIC (ネットワーク カード) が 1 つしかないことが確実にわかっている場合は、'FOR ステートメント' の末尾から ' & goto Removal ' を削除し、ラベル ' :remainder ' を削除します。

于 2012-01-14T05:27:31.323 に答える
1

コンテキストに基づいて行を選択する必要があるため、「findstr」のみを使用して目的の操作を実行することはできません(つまり、最初のネットワークカードに続くインデントされた行)。perl、awk、ruby、またはその他のスクリプト言語を使用してそれを行うのは簡単です。

Windowsのものだけでやりたいことをする方法を考えて、私はJavascriptを考えました。Javascriptは私の得意分野ではないことに注意してください。これはおそらく改善される可能性がありますが、「ネットワークカード」の後のすべての行が必要な場合、これは機能するはずです。

これをファイルに入れます(例:filter.js):

function processTextStream() {
    finder = new RegExp( "^((OS (Name|Version|Manufacturer))" +
                    "|(Original Install)|(System (Manuf|Model|Locale))" +
                    "|Processor|BIOS|Input Locale|Time Zone" +
                    ")" )
    netcard = new RegExp( "^NetWork Card" );

    printall = false;

    while (!WScript.StdIn.AtEndOfStream) {
        line = WScript.StdIn.ReadLine();
        if (finder.test(line))
        {
            WScript.echo(line);
        }
        else if (netcard.test(line))
        {
            WScript.echo(line);
            printall = true;
        }
        else if (printall)
        {
            WScript.echo(line);
        }

    }
}

// Main script flow
processTextStream();

バッチファイルから、次の手順を実行します。

systeminfo | cscript //nologo filter.js >SystemInfo.txt
于 2012-01-10T16:24:58.550 に答える
0

文字列の一致は1行に制限されます(つまり、キャリッジリターンの間にあるもの)。したがって、不足している識別子を検索文字列のリストに追加する必要があります。

systeminfo | findstr /C:"NetWork Card" /C:"[01]:" /C:"Connection Name:" /C:"DHCP Enabled:" /C:"DHCP Server:"

[01]もプロセッサに一致するため、プロセッサに関する追加情報も含まれることに気付くでしょう。ボックスに複数のNICが含まれている可能性がある場合は、[02]も検索できます。

そこにあるときにのみこれを検索したい場合は、systeminfo出力の最初の実行を別の検索ファイルの入力として使用する必要があります。たとえば、最初に出力を実行すると通知されます。1 NIC(s) Installedまたは2 NIC(s) Installed、ループと文字マッチングを使用してそれを解析し、forインストールされているNICの正確な数を取得してから、それを使用してsysteminfoを再度検索する必要があります。

于 2012-01-10T17:21:02.560 に答える