中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-06 07:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » VBS 里有没有类似于 CMD 的 Find? 查看 1,135 回复 7
楼 主 VBS 里有没有类似于 CMD 的 Find? 发表于 2007-07-06 10:46 ·  中国 安徽 芜湖 电信
高级用户
★★
积分 537
发帖 219
注册 2006-10-31 21:08
19年会员
UID 69036
性别 男
来自 芜湖
状态 离线
有一文本内容

123
adb
322
31a
121
hfh


我想找到 包含 "3" 的行
用批处理这样做

@echo off
find "3" test.txt
pause

用 VBS 怎么做? 一个一个读吗?
江湖远
碧空长
路茫茫

一个人漫无目的的奔跑,风,刺骨的冷....
2 发表于 2007-07-06 10:47 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
用VBS的正则表达式,搜索一下。
3 发表于 2007-07-06 11:14 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
VBSCRIPT.chm 上面的一个例子:
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分字符大小写。
regEx.Global = True ' 设置全局可用性。
Set Matches = regEx.Execute(strng) ' 执行搜索。
For Each Match in Matches ' 遍历匹配集合。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
huzixuan +2 2007-07-06 17:36
4 发表于 2007-07-06 12:36 ·  中国 安徽 芜湖 电信
高级用户
★★
积分 537
发帖 219
注册 2006-10-31 21:08
19年会员
UID 69036
性别 男
来自 芜湖
状态 离线
上面那个是什么意思,是从哪里搜索比对的,可以从文本里搜索吗
江湖远
碧空长
路茫茫

一个人漫无目的的奔跑,风,刺骨的冷....
5 发表于 2007-07-06 16:01 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线

set fso=createobject("scripting.filesystemobject")
set file=fso.opentextfile("test.txt")
s=split(file.readall,vbcrlf):mys=filter(s,"3")
file.close
msgbox join(mys,vbcrlf)


[ Last edited by jmz573515 on 2007-7-6 at 06:10 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
huzixuan +4 2007-07-06 17:36
6 发表于 2007-07-06 22:42 ·  中国 北京 利达宽带
中级用户
★★
积分 273
发帖 91
注册 2007-05-07 18:12
19年会员
UID 87770
性别 男
状态 离线
我来个比较通俗一点的

option explicit '严格语法
dim found,fso,file,str
set fso=createobject("scripting.filesystemobject") '创建文件系统对象
set file=fso.opentextfile("test.txt") '打开文件,并得到文件对象
found = "" '初始化缓冲区
while not file.atendofstream '只要文件没有结束就循环
str = file.readline '读取一行内容
if instr(str,"3")>0 then '判断是否包含3
found = found & str & vbcrlf '如果包含就加入到缓冲区
end if
wend
file.close '关闭文件
msgbox found '显示结果
set fso = nothing'释放对象
set file = nothing '(不知道这句该加么?)


[ Last edited by sonicandy on 2007-7-6 at 10:49 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
huzixuan +4 2007-07-07 17:14
7 发表于 2007-07-07 13:27 ·  中国 新疆 乌鲁木齐 电信
高级用户
★★★
Autowalk
积分 845
发帖 375
注册 2007-03-03 01:58
19年会员
UID 80606
性别 男
状态 离线
set fso=createobject("scripting.filesystemobject")
set op=fso.opentextfile("test.txt")
i_num=0
do while op.atendofstream=false
line=op.readline
if instr(1,line,"3")<>0 then
ret=ret&line&chr(10)
end if
loop
msgbox (ret)
你好,脚本专家!
<a target=blank href=tencent://message/?uin=29654761&Site=www.111.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:29654761:5 alt="点击这里给我发消息"></a>
8 发表于 2007-07-07 17:41 ·  中国 浙江 温州 电信
中级用户
★★
积分 458
发帖 196
注册 2006-10-05 12:04
19年会员
UID 64614
状态 离线
instr函数算是吧??
论坛跳转: