快速业务通道

用vbscript实现在文本文件中搜索两个项

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09
问:
您好,脚本专家!您曾经介绍过如何在文本文件中搜索单个词或短语,但如何在文本文件中搜索两个短语呢?我想知道文件中是否包含Windows2000或WindowsXP。
--JR
答:
您好,JR。您知道,让脚本专家去做一件事情就已经够困难的了;可见让他们去做两件事情几乎是不可能的。但我们要告诉您的是:只要您不介意我们向您介绍一种简单的方法来在文本文件中搜索多个项,我们就会向您介绍如何在文本文件中搜索多个项。
注意。为什么称之为“简单的方法”呢?我们不打算费神设置数组或其他某个复杂的框架来进行多个搜索。相反,我们打算在第一次搜索文件时搜索第一个术语,而后在第二次搜索文件时搜索第二个术语。这种方法虽不是很好,但却很简单,且很有效。
以下是一小段简单的脚本,它可告诉您是否可在文本文件C:\Scripts\Text.txt中找到术语Windows2000或WindowsXP:
复制代码 代码如下:

ConstForReading=1
blnFound=False
SetobjFSO=CreateObject("Scripting.FileSystemObject")
SetobjFile=objFSO.OpenTextFile("C:\Scripts\Test.txt",ForReading)
strContents=objFile.ReadAll
objFile.Close
IfInStr(strContents,"Windows2000")Then
blnFound=True
EndIf
IfInStr(strContents,"WindowsXP")Then
blnFound=True
EndIf
IfblnFoundThen
Wscript.Echo"EitherWindows2000orWindowsXPappearsinthisfile."
Else
Wscript.Echo"NeitherWindows2000norWindowsXPappearsinthisfile."
EndIf
此脚本开头定义了一个名为ForReading的常量,并将其值设定为1;打开文本文件时我们将用到它。我们还创建了一个名为blnFound的变量,并将其值指定为False;我们将使用此变量来跟踪是否在文件中找到了任意一个搜索术语。如果至少找到了一个术语,我们就将blnFound的值改为True;否则,该值将保持False不变。
接下来我们打开文件C:\Scripts\Test.txt进行读取,然后使用ReadAll方法将该文件的所有内容读入名为strContents的变量中;实际上我们将对存储于内存中的此文件“副本”进行搜索。由于我们不再需要此物理文件,因此我们调用Close方法将该文件关闭。
此时,我们可进行第一次搜索了。下面这行代码使用InStr函数来确定是否可在变量strContents中的某个位置找到字符串Windows2000:
IfInStr(strContents,"Windows2000")Then
如果InStr为True,则我们将blnFound的值设置为True;如果InStr为False,我们将直接跳至下一个搜索。在下一个搜索中,我们重复此过程,这次将搜索字符串WindowsXP:
IfInStr(strContents,"WindowsXP")Then
如果找到了Windows2000或WindowsXP(或二者均找到了),则blnFound将为True;如果两者均未找到,则blnFound将仍为False。在脚本的末尾,我们检查blnFound的值,并指出是否在文件中找到了一个或多个搜索短语。
但如果您想知道文件中是否同时包含这两个搜索短语,该怎么办呢?我们将不再对此做详细阐述,但下面的脚本可告诉您是否可在文件中同时找到两个目标短语:
ConstForReading=1
intFound=0
SetobjFSO=CreateObject("Scripting.FileSystemObject")
SetobjFile=objFSO.OpenTextFile("C:\Scripts\Test.txt",ForReading)
strContents=objFile.ReadAll
objFile.Close
IfInStr(strContents,"Windows2000")Then
intFound=intFound+1
EndIf
IfInStr(strContents,"WindowsXP")Then
intFound=intFound+1
EndIf
IfintFound=2Then
Wscript.Echo"ThetextfilecontainsbothWindows2000andWindowsXP."
Else
Wscript.Echo"ThetextfiledoesnotcontainbothWindows2000andWindowsXP."
EndIf
是的,该脚本的确与前面的脚本很相似。最大的不同之处在于我们没有使用True-False变量;而是使用了一个名为intFound的计数器变量。该脚本首先搜索Windows2000;如果找到了该短语,则会将intFound加1。(由于intFound开始时为0,这就意味着此时intFound将等于1。)
然后该脚本将搜索WindowsXP,如果找到了该短语,会将intFound的值加1。最终结果如何呢?在脚本末尾,只有同时找到了两个目标短语,intFound才会等于2;如果intFound等于0或1,则表示一个都没找到或只找到了一个目标短语。此时所要做的就是回显搜索结果。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号