中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:如何在txt中搜索特定的字符串
« [1] [2] »
作者:
标题: 请教:如何在txt中搜索特定的字符串 上一主题 | 下一主题
malongxa
初级用户





积分 26
发帖 11
注册 2005-11-9
状态 离线
『楼 主』:  请教:如何在txt中搜索特定的字符串

如果在xp/2003/2000的dos中有一个文本as.txt内容为( Pinging www.cctv.chinacache.net [218.30.70.56] with 32 bytes of data,我如何提取[后和]前的ip部分,注IP为可变数字,然后将此IP>>到另一个txt,谢谢!

2005-11-9 15:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 2 楼』:  你可以看一下find命令

我没xp
如果是我在dos下,我会按‘[’和‘]‘把文字截断比如:
Pinging www.cctv.chinacache.net [
218.30.70.56]
with 32 bytes of data

然后提取含‘]‘的行就是了

2005-11-9 16:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 3 楼』:  

Re malongxa:

      试试在命令行运行以下命令试试看,如果可行再告诉你具体的要求,然后我可以尝试给出更完整健壮的方案。

for /f "delims=[] tokens=2" %i in (as.txt) do echo.%i>>Result.txt

   此帖被 +2 点积分    点击查看详情   




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-11-9 17:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
malongxa
初级用户





积分 26
发帖 11
注册 2005-11-9
状态 离线
『第 4 楼』:  

版主你太强了,我用你的方法for /f "delims=[] tokens=2" %i in (as.txt) do echo.%i>>temp得到了我要得结果,而且使我学到了东西,谢谢,再次感谢!!!

2005-11-10 09:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
malongxa
初级用户





积分 26
发帖 11
注册 2005-11-9
状态 离线
『第 5 楼』:  

版主我想首先ping  xxx.com 在得出的结果里找到ip(yyy.yyy.yyy.yyy),在将这个作为另外一个命令ping的执行参数如ping  yyy.yyy.yyy.yyy,因为我用的是动态IP所以每次IP变了后,都会很麻烦,我想学着自己编批处理,可是很多参数都不明白,希望能向版主多多学习,谢谢!!

2005-11-10 10:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
malongxa
初级用户





积分 26
发帖 11
注册 2005-11-9
状态 离线
『第 6 楼』:  

我编的批处理cctv.bat
ping www.cctv.com >as.txt
for /f "delims=[] token=2" %i in (as.txt) do ping %i
单独执行每行都行,可是合起来执行就不行了,请指点,谢谢!

2005-11-10 15:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 7 楼』:  

Re malongxa:

      在批处理文件中使用 for 语句时,其中的替代变量必须用双百分号做前导,即%i应改为%%i,这源于在批处理和命令行中解析代码行所存在的差异性。

      另外,这两句代码可以尝试用一句实现,仍然给出命令行下的方案:

      for /f "delims=[] token=2" %i in ('ping www.cctv.com') do ping %i



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-11-10 19:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 8 楼』:  

可惜dos/98下都不能使用那麽多的for參數~

2005-11-10 22:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
malongxa
初级用户





积分 26
发帖 11
注册 2005-11-9
状态 离线
『第 9 楼』:  

谢谢版主帮助,我还想进一步完善我的想法,假设我现有一个文本as.txt
Alternate TCP addresses for

Local Address         Alternate Address
--------------------  --------------------
Default               219.137.124.26
我要取文本中的IP即(219.137.124.26)
将这个IP和ping www.cctv.com里取得的IP相比较
如果IP相同则无动作
如果IP不同则执行
for /f "delims=[] token=2" %i in ('ping www.cctv.com') do ping %i,
再次感谢版主指点

[ Last edited by malongxa on 2005-11-11 at 14:28 ]

2005-11-11 10:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
malongxa
初级用户





积分 26
发帖 11
注册 2005-11-9
状态 离线
『第 10 楼』:  

我已经可以提取AS.TXT中的IP了
用for /f "delims=ault tokens=2" %i in (as.txt) do echo %i
可是提取的IP前含有空格
现在是不知道如何比较和判断这个IP和ping www.cctv.com里提取IP的不同
请指点,谢谢!

2005-11-11 14:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 11 楼』:  



  Quote:
用for /f "delims=ault tokens=2" %i in (as.txt) do echo %i
可是提取的IP前含有空格

换个顺序,这样:
for /f "tokens=2 delims= " %i in (as.txt) do echo %i

我实在不知道你最终想干什么,下面是你第 9 楼要得功能。
存为批文件执行。
for /f "tokens=2 delims=[]" %%i in ('ping www.cctv.com') do set a=%%i
for /f "tokens=2 delims= " %%i in (as.txt) do set b=%%i
if "%a%" NEQ "%b%" for /f "tokens=2 delims=[]" %%i in ('ping www.cctv.com') do ping %%i


   此帖被 +2 点积分    点击查看详情   


2005-11-12 00:55
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
malongxa
初级用户





积分 26
发帖 11
注册 2005-11-9
状态 离线
『第 12 楼』:  

谢谢你无奈何,我按你的指点测试了下成功了,如果我还是以a,b为判断条件接着执行命令,那我是否可以在你的批处理后加上
if "%a%" NEQ "%b%" ping www.cctv.com
还是直接在if "%a%" NEQ "%b%" for /f "tokens=2 delims=[]" %%i in ('ping www.cctv.com') do ping %%i 后加ping www.cctv.com
写成if "%a%" NEQ "%b%" for /f "tokens=2 delims=[]" %%i in ('ping www.cctv.com') do ping %%i ping www.cctv.com
再次感谢!

2005-11-13 00:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 13 楼』:  

if ... 后直接跟你要执行的语句就行了。
如果多条语句可以用 & 连接
例:
if "%a%" NEQ "%b%" dir
if "%a%" NEQ "%b%" dir & echo OK

2005-11-13 00:43
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
zzhynxxn
新手上路





积分 16
发帖 6
注册 2005-11-14
状态 离线
『第 14 楼』:  

如果我想从一个文本中任意取值,我该怎么做。谢谢!!!
比如有个文本a.txt,内容如下:
Local Address         Alternate Address
我要取其中的“nate”,我该怎么做

2005-11-14 11:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
malongxa
初级用户





积分 26
发帖 11
注册 2005-11-9
状态 离线
『第 15 楼』:  

能否请版主和无奈何两位高手详细介绍一下"delims=[] token=2"的用法,我还是没办法抓取特定的字符,再次谢谢两位高手!!

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


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



论坛跳转: