中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 11:28
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 如果将文本里的指定信息提取出来?
可打印版本  1,992 / 25
第1楼 worldopener 发表于 2008-04-29 12:33
初级用户 发帖 20 积分 44
如果将文本里的指定信息提取出来?
用命令ipconfig /all >>ip.txt 可以将IP信息输出到文件,如:
Windows IP Configuration

Host Name . . . . . . . . . . . . : owq

Primary Dns Suffix . . . . . . . :

Node Type . . . . . . . . . . . . : Unknown

IP Routing Enabled. . . . . . . . : No

WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :

Description . . . . . . . . . . . : Realtek RTL8169/8110 Family Gigabit Ethernet NIC

Physical Address. . . . . . . . . : 00-1B-FC-C0-2B-86

Dhcp Enabled. . . . . . . . . . . : No

IP Address. . . . . . . . . . . . : 192.168.2.234

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 192.168.2.200

DNS Servers . . . . . . . . . . . : 202.96.134.133


我只想把里面的用户(owq)、IP(192.168.2.234)和mac地址(00-1B-FC-C0-2B-86)提取出来,输出到另外一个文本ipinfo.txt里,并按照如下的方式排列(中间用Tab键或空格分隔):

owq 192.168.2.233 00-1B-FC-C0-2B-86

请各位高手指教一下,不胜感激!!

[ Last edited by worldopener on 2008-4-29 at 12:35 PM ]
第2楼 abcd 发表于 2008-04-29 12:47
银牌会员 发帖 739 积分 1,436
第3楼 worldopener 发表于 2008-04-29 13:07
初级用户 发帖 20 积分 44
非常感谢abcd的指导,受益匪浅啊!
如果我有很多个这样的文本,如:
A.txt

Windows IP Configuration

Host Name . . . . . . . . . . . . :S1
Primary Dns Suffix . . . . . . . :

Node Type . . . . . . . . . . . . : Unknown

IP Routing Enabled. . . . . . . . : No

WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :

Description . . . . . . . . . . . : Realtek RTL8169/8110 Family Gigabit Ethernet NIC

Physical Address. . . . . . . . . : 00-1B-FC-C0-2B-86

Dhcp Enabled. . . . . . . . . . . : No

IP Address. . . . . . . . . . . . : 192.168.2.234

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 192.168.2.200

DNS Servers . . . . . . . . . . . : 202.96.134.133


B.txt

Windows IP Configuration

Host Name . . . . . . . . . . . . :S2

Primary Dns Suffix . . . . . . . :

Node Type . . . . . . . . . . . . : Unknown

IP Routing Enabled. . . . . . . . : No

WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :

Description . . . . . . . . . . . : Realtek RTL8169/8110 Family Gigabit Ethernet NIC

Physical Address. . . . . . . . . : 00-1B-FC-C0-2C-96

Dhcp Enabled. . . . . . . . . . . : No

IP Address. . . . . . . . . . . . : 192.168.2.235

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 192.168.2.200

DNS Servers . . . . . . . . . . . : 202.96.134.133


想把每个文本里的用户、IP和mac地址一一提取出来,输出到另外一个文本ipinfo.txt里,格式如下:
S1 192.168.2.234 00-1B-FC-C0-2B-86
S2 192.168.2.235 00-1B-FC-C0-2C-96


那又应该如何写代码呢?

[ Last edited by worldopener on 2008-4-30 at 08:41 AM ]
第4楼 terrytong 发表于 2008-04-29 15:59
中级用户 发帖 115 积分 240
abcd 介意详细解释一下for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /i "host address"') do (
call,set str=%%str%%%%i
)的意思。谢谢...
第5楼 abcd 发表于 2008-04-29 16:20
银牌会员 发帖 739 积分 1,436
就是从ipconfig的结果中find包含host和address的行,然后通过for截取冒号(:)后面的字符。

再把截取到的字符连接起来。
第6楼 jfm034 发表于 2008-04-29 16:58
新手上路 发帖 8 积分 16
正想着如何实现呢。。没想到已经有现成的

谢谢。。

是否能自动叠加在同一文本内。。??
第7楼 abcd 发表于 2008-04-29 17:03
银牌会员 发帖 739 积分 1,436
echo .......>>test.txt
第8楼 terrytong 发表于 2008-04-29 18:48
中级用户 发帖 115 积分 240
for /f "delims=:" %%i 应该是截取冒号(:)前面的字符啊,为什么会能截取后面的啊?
第9楼 abcd 发表于 2008-04-29 19:14
银牌会员 发帖 739 积分 1,436
tokens=2
第10楼 xvzheng 发表于 2008-04-29 23:41
新手上路 发帖 7 积分 14
你实在是太好了。我喜欢这样的批处理
第11楼 worldopener 发表于 2008-04-30 08:43
初级用户 发帖 20 积分 44
如果是从多个文本里提取信息应怎么写代码呢?
第12楼 jfm034 发表于 2008-04-30 10:38
新手上路 发帖 8 积分 16
修改下。。。:

@echo off
for /f "tokens=2 delims=:" %%i in ('findstr /i "host description address gateway dns" ip.txt') do (
call,set str=%%str%%%%i
)
echo %str%>>test.txt

pause

本人刚学这个。。只能修改为从特定的文件中取相应的信息。。
还不会用循环处理。。

有待高手提示。。。
第13楼 26933062 发表于 2008-04-30 10:56
银牌会员 发帖 879 积分 2,268
:
第14楼 terrytong 发表于 2008-04-30 11:15
中级用户 发帖 115 积分 240
for /f "tokens=2" %%i in ('ipconfig /all^|findstr /i "host address"') 会显示 NameAddress.Adress.
for /f "delims=:" %%i in ('ipconfig /all^|findstr /i "host address"')会显示
Host Name . . . . . . . . . . . . Physical Address. . . . . . . . . IP Address. . . . . . . . . . . .
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /i "host address"')怎么能显示owq 192.168.2.233 00-1B-FC-C0-2B-86 呢?
还是不太懂啊?
第15楼 worldopener 发表于 2008-04-30 12:09
初级用户 发帖 20 积分 44
Originally posted by abcd at 2008-4-30 10:51 AM:

多个文本的话,再在for外层加个for来读取文件名,再把文件名传递给内层for

[ Last edited by abcd on 2008-4-30 at 10:53 AM ]


请问怎么加外层for循环呢?
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023