中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-25 23:11
47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行
DOS批处理 & 脚本技术(批处理室) » 请教:如何在txt中搜索特定的字符串
可打印版本  5,375 / 20
第1楼 malongxa 发表于 2005-11-09 15:03
初级用户 发帖 11 积分 26
请教:如何在txt中搜索特定的字符串
如果在xp/2003/2000的dos中有一个文本as.txt内容为( Pinging www.cctv.chinacache.net with 32 bytes of data,我如何提取前的ip部分,注IP为可变数字,然后将此IP>>到另一个txt,谢谢!
第2楼 bush 发表于 2005-11-09 16:17
银牌会员 发帖 730 积分 2,165
你可以看一下find命令
我没xp
如果是我在dos下,我会按‘‘把文字截断比如:
Pinging www.cctv.chinacache.net

with 32 bytes of data

然后提取含‘]‘的行就是了
第3楼 willsort 发表于 2005-11-09 17:40
元老会员 发帖 1,512 积分 4,432
Re malongxa:

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

for /f "delims=[] tokens=2" %i in (as.txt) do echo.%i>>Result.txt
第4楼 malongxa 发表于 2005-11-10 09:26
初级用户 发帖 11 积分 26
版主你太强了,我用你的方法for /f "delims=[] tokens=2" %i in (as.txt) do echo.%i>>temp得到了我要得结果,而且使我学到了东西,谢谢,再次感谢!!!
第5楼 malongxa 发表于 2005-11-10 10:38
初级用户 发帖 11 积分 26
版主我想首先ping xxx.com 在得出的结果里找到ip(yyy.yyy.yyy.yyy),在将这个作为另外一个命令ping的执行参数如ping yyy.yyy.yyy.yyy,因为我用的是动态IP所以每次IP变了后,都会很麻烦,我想学着自己编批处理,可是很多参数都不明白,希望能向版主多多学习,谢谢!!
第6楼 malongxa 发表于 2005-11-10 15:25
初级用户 发帖 11 积分 26
我编的批处理cctv.bat
ping www.cctv.com >as.txt
for /f "delims= token=2" %i in (as.txt) do ping %i
单独执行每行都行,可是合起来执行就不行了,请指点,谢谢!
第7楼 willsort 发表于 2005-11-10 19:51
元老会员 发帖 1,512 积分 4,432
Re malongxa:

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

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

for /f "delims= token=2" %i in ('ping www.cctv.com') do ping %i
第8楼 bush 发表于 2005-11-10 22:22
银牌会员 发帖 730 积分 2,165
可惜dos/98下都不能使用那麽多的for參數~
第9楼 malongxa 发表于 2005-11-11 10:18
初级用户 发帖 11 积分 26
谢谢版主帮助,我还想进一步完善我的想法,假设我现有一个文本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 ]
第10楼 malongxa 发表于 2005-11-11 14:34
初级用户 发帖 11 积分 26
我已经可以提取AS.TXT中的IP了
用for /f "delims=ault tokens=2" %i in (as.txt) do echo %i
可是提取的IP前含有空格
现在是不知道如何比较和判断这个IP和ping www.cctv.com里提取IP的不同
请指点,谢谢!
第11楼 无奈何 发表于 2005-11-12 00:55
荣誉版主 发帖 356 积分 1,338

用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 楼要得功能。
存为批文件执行。
第12楼 malongxa 发表于 2005-11-13 00:28
初级用户 发帖 11 积分 26
谢谢你无奈何,我按你的指点测试了下成功了,如果我还是以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
再次感谢!
第13楼 无奈何 发表于 2005-11-13 00:43
荣誉版主 发帖 356 积分 1,338
if ... 后直接跟你要执行的语句就行了。
如果多条语句可以用 & 连接
例:
if "%a%" NEQ "%b%" dir
if "%a%" NEQ "%b%" dir & echo OK
第14楼 zzhynxxn 发表于 2005-11-14 11:07
新手上路 发帖 6 积分 16
如果我想从一个文本中任意取值,我该怎么做。谢谢!!!
比如有个文本a.txt,内容如下:
Local Address Alternate Address
我要取其中的“nate”,我该怎么做
第15楼 malongxa 发表于 2005-11-14 22:10
初级用户 发帖 11 积分 26
能否请版主和无奈何两位高手详细介绍一下"delims=[] token=2"的用法,我还是没办法抓取特定的字符,再次谢谢两位高手!!
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023