中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]VBS从a文件筛选指定内容的行输出
作者:
标题: [已解决]VBS从a文件筛选指定内容的行输出 上一主题 | 下一主题
waynebeat
初级用户




积分 84
发帖 28
注册 2006-5-3
状态 离线
『楼 主』:  [已解决]VBS从a文件筛选指定内容的行输出

a.txt内容如下                              想从a.txt中选出所有含有b.txt内容的行,并输出到c.txt中,代码如下,出现的问题是:输出的c.txt中只有(1,2,3),也就是当遇到b.txt中的"56"时,
1
2                                                  因在a.txt中没有找到相应行,脚本就自动退出了,想请问一下是什么原因,应该如何解决?(不用findstr是因为就想学习一下VBS)请指教,谢谢
3
4
5
6
7

b.txt内容如下
1
2
3
56
4
5

a.vbs内容如下

Set fso = CreateObject("Scripting.FileSystemObject")

Set f1 = fso.GetFile("b.txt")

Set f2 = fso.GetFile("a.txt")

Set ts1 = f1.OpenAsTextStream(1,-2)

Set ts2 = f2.OpenAsTextStream(1,-2)

Set f3 = fso.OpenTextFile("c.txt",2,True)

Do Until ts1.AtEndOfStream

    RL1 = ts1.ReadLine

    Do While ts2.AtEndOfStream <> True

         RL2 = ts2.ReadLine

         If InStr(RL2,RL1) Then

         f3.WriteLine RL2
   
         Exit Do
  
         End If

    Loop

    Set ts2 = f2.OpenAsTextStream(1,-2)

Loop

[ Last edited by waynebeat on 2010-8-28 at 22:59 ]

2010-8-28 13:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 2 楼』:  

将 Set ts2 = f2.OpenAsTextStream(1,-2) 移到内部循环体之外,即最后两行 Loop 之间,因为不管是否找到,都要重置 ts2 。

2010-8-28 18:21
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
waynebeat
初级用户




积分 84
发帖 28
注册 2006-5-3
状态 离线
『第 3 楼』:  

多谢指教!其实刚接触VBS不久,重置ts2还是好不容易想出来的,结果忽略了位置

2010-8-28 22:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: