![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 00:35 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已解决]VBS从a文件筛选指定内容的行输出 |
| 可打印版本 851 / 2 |
| 第1楼 waynebeat | 发表于 2010-08-28 13:37 |
| 初级用户 发帖 28 积分 84 | |
|
[已解决]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 ] |
|
| 第2楼 qinchun36 | 发表于 2010-08-28 18:21 |
| 高级用户 发帖 400 积分 609 | |
|
将 Set ts2 = f2.OpenAsTextStream(1,-2) 移到内部循环体之外,即最后两行 Loop 之间,因为不管是否找到,都要重置 ts2 。
|
|
| 第3楼 waynebeat | 发表于 2010-08-28 22:28 |
| 初级用户 发帖 28 积分 84 | |
|
多谢指教!其实刚接触VBS不久,重置ts2还是好不容易想出来的,结果忽略了位置
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |