中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-17 08:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如果将文本里的指定信息提取出来? 查看 1,850 回复 25
楼 主 如果将文本里的指定信息提取出来? 发表于 2008-04-29 12:33 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 44
发帖 20
注册 2008-04-24 10:38
UID 116792
性别 男
状态 离线
用命令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 发表于 2008-04-29 12:47 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
@echo off
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /i "host address"') do (
call,set str=%%str%%%%i
)
echo %str%
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
worldopener +1 2008-04-29 13:23
3 发表于 2008-04-29 13:07 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 44
发帖 20
注册 2008-04-24 10:38
UID 116792
性别 男
状态 离线
非常感谢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 发表于 2008-04-29 15:59 ·  中国 上海 上海地面通信息网络有限公司
中级用户
★★
积分 240
发帖 115
注册 2008-03-10 19:31
UID 112561
性别 男
状态 离线
abcd 介意详细解释一下for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /i "host address"') do (
call,set str=%%str%%%%i
)的意思。谢谢...
5 发表于 2008-04-29 16:20 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
就是从ipconfig的结果中find包含host和address的行,然后通过for截取冒号(:)后面的字符。

再把截取到的字符连接起来。
6 发表于 2008-04-29 16:58 ·  中国 广东 东莞 电信
新手上路
积分 16
发帖 8
注册 2006-12-07 00:46
UID 72764
性别 男
状态 离线
正想着如何实现呢。。没想到已经有现成的

谢谢。。

是否能自动叠加在同一文本内。。??
7 发表于 2008-04-29 17:03 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
echo .......>>test.txt
8 发表于 2008-04-29 18:48 ·  中国 上海 上海地面通信息网络有限公司
中级用户
★★
积分 240
发帖 115
注册 2008-03-10 19:31
UID 112561
性别 男
状态 离线
for /f "delims=:" %%i 应该是截取冒号(:)前面的字符啊,为什么会能截取后面的啊?
9 发表于 2008-04-29 19:14 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
tokens=2
10 发表于 2008-04-29 23:41 ·  中国 江苏 南京 电信
新手上路
积分 14
发帖 7
注册 2008-04-29 22:21
UID 117324
性别 男
状态 离线
你实在是太好了。我喜欢这样的批处理
11 发表于 2008-04-30 08:43 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 44
发帖 20
注册 2008-04-24 10:38
UID 116792
性别 男
状态 离线
如果是从多个文本里提取信息应怎么写代码呢?
12 发表于 2008-04-30 10:38 ·  中国 广东 东莞 电信
新手上路
积分 16
发帖 8
注册 2006-12-07 00:46
UID 72764
性别 男
状态 离线
修改下。。。:

@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 发表于 2008-04-30 10:56 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
UID 73968
性别 男
状态 离线
:

@echo off&setlocal enabledelayedexpansion
for /f "tokens=3 delims=:" %%i in ('findstr /i "host address" *.txt') do (
set /a m+=1
set /p=%%i<nul
if !m! equ 3 set m=0&echo.
)
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
worldopener +1 2008-04-30 13:58
致精致简!
14 发表于 2008-04-30 11:15 ·  中国 上海 上海地面通信息网络有限公司
中级用户
★★
积分 240
发帖 115
注册 2008-03-10 19:31
UID 112561
性别 男
状态 离线
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 发表于 2008-04-30 12:09 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 44
发帖 20
注册 2008-04-24 10:38
UID 116792
性别 男
状态 离线
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循环呢?
论坛跳转: