手机
当前位置:查字典教程网 >脚本专栏 >vbs >用vbscript实现在文本文件中搜索两个项
用vbscript实现在文本文件中搜索两个项
摘要:问:您好,脚本专家!您曾经介绍过如何在文本文件中搜索单个词或短语,但如何在文本文件中搜索两个短语呢?我想知道文件中是否包含Windows20...

问:

您好,脚本专家!您曾经介绍过如何在文本文件中搜索单个词或短语,但如何在文本文件中搜索两个短语呢?我想知道文件中是否包含Windows2000或WindowsXP。

--JR

答:

您好,JR。您知道,让脚本专家去做一件事情就已经够困难的了;可见让他们去做两件事情几乎是不可能的。但我们要告诉您的是:只要您不介意我们向您介绍一种简单的方法来在文本文件中搜索多个项,我们就会向您介绍如何在文本文件中搜索多个项。

注意。为什么称之为“简单的方法”呢?我们不打算费神设置数组或其他某个复杂的框架来进行多个搜索。相反,我们打算在第一次搜索文件时搜索第一个术语,而后在第二次搜索文件时搜索第二个术语。这种方法虽不是很好,但却很简单,且很有效。

以下是一小段简单的脚本,它可告诉您是否可在文本文件C:ScriptsText.txt中找到术语Windows2000或WindowsXP:

复制代码 代码如下:

ConstForReading=1

blnFound=False

SetobjFSO=CreateObject("Scripting.FileSystemObject")

SetobjFile=objFSO.OpenTextFile("C:ScriptsTest.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:ScriptsTest.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:ScriptsTest.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,则表示一个都没找到或只找到了一个目标短语。此时所要做的就是回显搜索结果。

【用vbscript实现在文本文件中搜索两个项】相关文章:

用vbs实现删除名称中有撇号的文件夹

用vbs实现禁用服务

用vbs实现防止计算机使用 LMHosts 文件

vbscript 注册表脚本书写

用vbscript实现将脚本的输出复制到剪贴板

用vbscript得到注册表中是否存在某个值

用vbs实现更改计算机的说明的代码

用vbs读取远程计算机上的文本文件的代码

用vbscript实现在消息框中显示一个超链接

vbs实现压缩文件夹的脚本

精品推荐
分类导航