Batch file 使用批处理显示文本文件中特定行之后的所有行

Batch file 使用批处理显示文本文件中特定行之后的所有行,batch-file,system-information,Batch File,System Information,这是我的密码 @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:

这是我的密码

@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。

仅使用“findstr”无法完成您想要的操作,因为您需要根据其上下文选择行(即第一张网卡后面的缩进行)。使用perl、awk、ruby或其他脚本语言来实现这一点很简单

想到一种只使用Windows的方法,我想到了Javascript。请注意,Javascript不是我的强项,这可能会做得更好,但假设您需要“网卡”后面的所有行,这应该可以:

将其放入文件(例如:filter.js):

从批处理文件中,执行以下操作:

systeminfo | cscript //nologo filter.js >SystemInfo.txt

字符串匹配仅限于一行(即回车之间的内容)。因此,您需要将缺少的标识符添加到搜索字符串列表中

systeminfo | findstr /C:"NetWork Card" /C:"[01]:" /C:"Connection Name:" /C:"DHCP Enabled:" /C:"DHCP Server:"
你会注意到这也会在你的处理器上带来额外的信息,因为[01]在那里也匹配。如果您认为一个盒子可能有多个nic,您也可以搜索[02]

如果您只想在它存在时搜索它,那么您需要使用第一次运行的systeminfo输出作为另一个搜索文件的输入。例如,第一次运行输出将告诉您安装了
1个NIC
2个NIC
,然后您将需要使用
for
循环和字符匹配来解析该值,以获得安装的NIC的确切数量,然后再次使用该值搜索系统信息。

@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(网卡),那么您可以从“for语句”的末尾删除“&转到余数””,并删除标签“:余数”

您可能希望在下一次发布之前对数据进行清理。你只是给了这个世界你的外部域名,还有一台丢失了100多个补丁的电脑的内部IP。我认为这不是他想要的。他要求找到一种方法来提取文本文件中“特定行”之后的所有行。@glauber他问“我如何获取缺少的内容?”这是一种有效的方法,同时保持findstr的使用。您的方式是使用其他技术的另一种有效方式。
@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