中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 19:01
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:如何在txt中搜索特定的字符串
楼 主 请教:如何在txt中搜索特定的字符串 发表于 2005-11-09 15:03 ·  中国 陕西 西安 电信
初级用户
积分 26
发帖 11
注册 2005-11-09 14:40
UID 44898
状态 离线
如果在xp/2003/2000的dos中有一个文本as.txt内容为( Pinging www.cctv.chinacache.net with 32 bytes of data,我如何提取前的ip部分,注IP为可变数字,然后将此IP>>到另一个txt,谢谢!
2 你可以看一下find命令 发表于 2005-11-09 16:17 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
我没xp
如果是我在dos下,我会按‘‘把文字截断比如:
Pinging www.cctv.chinacache.net

with 32 bytes of data

然后提取含‘]‘的行就是了
3 发表于 2005-11-09 17:40 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re malongxa:

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

for /f "delims=[] tokens=2" %i in (as.txt) do echo.%i>>Result.txt
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
4 发表于 2005-11-10 09:26 ·  中国 陕西 西安 电信
初级用户
积分 26
发帖 11
注册 2005-11-09 14:40
UID 44898
状态 离线
版主你太强了,我用你的方法for /f "delims=[] tokens=2" %i in (as.txt) do echo.%i>>temp得到了我要得结果,而且使我学到了东西,谢谢,再次感谢!!!
5 发表于 2005-11-10 10:38 ·  中国 陕西 西安 电信
初级用户
积分 26
发帖 11
注册 2005-11-09 14:40
UID 44898
状态 离线
版主我想首先ping xxx.com 在得出的结果里找到ip(yyy.yyy.yyy.yyy),在将这个作为另外一个命令ping的执行参数如ping yyy.yyy.yyy.yyy,因为我用的是动态IP所以每次IP变了后,都会很麻烦,我想学着自己编批处理,可是很多参数都不明白,希望能向版主多多学习,谢谢!!
6 发表于 2005-11-10 15:25 ·  中国 陕西 西安 电信
初级用户
积分 26
发帖 11
注册 2005-11-09 14:40
UID 44898
状态 离线
我编的批处理cctv.bat
ping www.cctv.com >as.txt
for /f "delims= token=2" %i in (as.txt) do ping %i
单独执行每行都行,可是合起来执行就不行了,请指点,谢谢!
7 发表于 2005-11-10 19:51 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re malongxa:

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

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

for /f "delims= token=2" %i in ('ping www.cctv.com') do ping %i
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
8 发表于 2005-11-10 22:22 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
可惜dos/98下都不能使用那麽多的for參數~
9 发表于 2005-11-11 10:18 ·  中国 陕西 西安 电信
初级用户
积分 26
发帖 11
注册 2005-11-09 14:40
UID 44898
状态 离线
谢谢版主帮助,我还想进一步完善我的想法,假设我现有一个文本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 发表于 2005-11-11 14:34 ·  中国 陕西 西安 电信
初级用户
积分 26
发帖 11
注册 2005-11-09 14:40
UID 44898
状态 离线
我已经可以提取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 ·  中国 辽宁 锦州 中移铁通
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
UID 40733
性别 男
状态 离线

用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

12 发表于 2005-11-13 00:28 ·  中国 陕西 西安 电信
初级用户
积分 26
发帖 11
注册 2005-11-09 14:40
UID 44898
状态 离线
谢谢你无奈何,我按你的指点测试了下成功了,如果我还是以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 ·  中国 辽宁 锦州 中移铁通
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
UID 40733
性别 男
状态 离线
if ... 后直接跟你要执行的语句就行了。
如果多条语句可以用 & 连接
例:
if "%a%" NEQ "%b%" dir
if "%a%" NEQ "%b%" dir & echo OK
14 发表于 2005-11-14 11:07 ·  中国 陕西 西安 电信
新手上路
积分 16
发帖 6
注册 2005-11-14 10:07
UID 45208
状态 离线
如果我想从一个文本中任意取值,我该怎么做。谢谢!!!
比如有个文本a.txt,内容如下:
Local Address Alternate Address
我要取其中的“nate”,我该怎么做
15 发表于 2005-11-14 22:10 ·  中国 陕西 西安 电信
初级用户
积分 26
发帖 11
注册 2005-11-09 14:40
UID 44898
状态 离线
能否请版主和无奈何两位高手详细介绍一下"delims=[] token=2"的用法,我还是没办法抓取特定的字符,再次谢谢两位高手!!
论坛跳转: