中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如果将文本里的指定信息提取出来?
« [1] [2] »
作者:
标题: 如果将文本里的指定信息提取出来? 上一主题 | 下一主题
worldopener
初级用户





积分 44
发帖 20
注册 2008-4-24
状态 离线
『楼 主』:  如果将文本里的指定信息提取出来?

用命令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 ]

2008-4-29 12:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 2 楼』:  


@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-4-29 13:23


2008-4-29 12:47
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
worldopener
初级用户





积分 44
发帖 20
注册 2008-4-24
状态 离线
『第 3 楼』:  

非常感谢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 ]

2008-4-29 13:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terrytong
中级用户





积分 240
发帖 115
注册 2008-3-10
状态 离线
『第 4 楼』:  

abcd 介意详细解释一下for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /i "host address"') do (
  call,set str=%%str%%%%i
)的意思。谢谢...

2008-4-29 15:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 5 楼』:  

就是从ipconfig的结果中find包含host和address的行,然后通过for截取冒号(:)后面的字符。

再把截取到的字符连接起来。

2008-4-29 16:20
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
jfm034
新手上路





积分 16
发帖 8
注册 2006-12-7
状态 离线
『第 6 楼』:  

正想着如何实现呢。。没想到已经有现成的

谢谢。。

是否能自动叠加在同一文本内。。??

2008-4-29 16:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 7 楼』:  

echo .......>>test.txt

2008-4-29 17:03
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
terrytong
中级用户





积分 240
发帖 115
注册 2008-3-10
状态 离线
『第 8 楼』:  

for /f "delims=:" %%i  应该是截取冒号(:)前面的字符啊,为什么会能截取后面的啊?

2008-4-29 18:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 9 楼』:  

tokens=2

2008-4-29 19:14
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
xvzheng
新手上路





积分 14
发帖 7
注册 2008-4-29
状态 离线
『第 10 楼』:  

你实在是太好了。我喜欢这样的批处理

2008-4-29 23:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
worldopener
初级用户





积分 44
发帖 20
注册 2008-4-24
状态 离线
『第 11 楼』:  

如果是从多个文本里提取信息应怎么写代码呢?

2008-4-30 08:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jfm034
新手上路





积分 16
发帖 8
注册 2006-12-7
状态 离线
『第 12 楼』:  

修改下。。。:

@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

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

有待高手提示。。。

2008-4-30 10:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 13 楼』:  

:
@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-4-30 13:58




致精致简!
2008-4-30 10:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terrytong
中级用户





积分 240
发帖 115
注册 2008-3-10
状态 离线
『第 14 楼』:  

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 呢?
还是不太懂啊?

2008-4-30 11:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
worldopener
初级用户





积分 44
发帖 20
注册 2008-4-24
状态 离线
『第 15 楼』:  



  Quote:
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循环呢?

2008-4-30 12:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: