问:
您好,脚本专家! 您曾经介绍过如何在文本文件中搜索单个词或短语,但如何在文本文件中搜索两个短语呢? 我想知道文件中是否包含 Windows 2000 或 Windows XP。
-- JR
答:
您好,JR。您知道,让脚本专家去做一件事情就已经够困难的了;可见让他们去做两件事情几乎是不可能的。 但我们要告诉您的是: 只要您不介意我们向您介绍一种简单的方法来在文本文件中搜索多个项,我们就会向您介绍如何在文本文件中搜索多个项。
注意。 为什么称之为“简单的方法”呢? 我们不打算费神设置数组或其他某个复杂的框架来进行多个搜索。 相反,我们打算在第一次搜索文件时搜索第一个术语,而后在第二次搜索文件时搜索第二个术语。 这种方法虽不是很好,但却很简单,且很有效。
以下是一小段简单的脚本,它可告诉您是否可在文本文件 C:\Scripts\Text.txt 中找到术语 Windows 2000 或 Windows XP:
复制代码 代码如下:
Const ForReading = 1
blnFound = False
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading)
strContents = objFile.ReadAll
objFile.Close
If InStr(strContents, "Windows 2000") Then
blnFound = True
End If
If InStr(strContents, "Windows XP") Then
blnFound = True
End If
If blnFound Then
Wscript.Echo "Either Windows 2000 or Windows XP appears in this file."
Else
Wscript.Echo "Neither Windows 2000 nor Windows XP appears in this file."
End If
此脚本开头定义了一个名为 ForReading 的常量,并将其值设定为 1;打开文本文件时我们将用到它。 我们还创建了一个名为 blnFound 的变量,并将其值指定为 False;我们将使用此变量来跟踪是否在文件中找到了任意一个搜索术语。 如果至少找到了一个术语,我们就将 blnFound 的值改为 True;否则,该值将保持 False 不变。
接下来我们打开文件 C:\Scripts\Test.txt 进行读取,然后使用 ReadAll 方法将该文件的所有内容读入名为 strContents 的变量中;实际上我们将对存储于内存中的此文件“副本”进行搜索。 由于我们不再需要此物理文件,因此我们调用 Close 方法将该文件关闭。
此时,我们可进行第一次搜索了。 下面这行代码使用 InStr 函数来确定是否可在变量 strContents 中的某个位置找到字符串 Windows 2000:
If InStr(strContents, "Windows 2000") Then
如果 InStr 为 True,则我们将 blnFound 的值设置为 True;如果 InStr 为 False,我们将直接跳至下一个搜索。 在下一个搜索中,我们重复此过程,这次将搜索字符串 Windows XP:
If InStr(strContents, "Windows XP") Then
如果找到了 Windows 2000 或 Windows XP(或二者均找到了),则 blnFound 将为 True;如果两者均未找到,则 blnFound 将仍为 False。 在脚本的末尾,我们检查 blnFound 的值,并指出是否在文件中找到了一个或多个搜索短语。
但如果您想知道文件中是否同时包含这两个搜索短语,该怎么办呢? 我们将不再对此做详细阐述,但下面的脚本可告诉您是否可在文件中同时找到两个目标短语:
Const ForReading = 1
intFound = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading)
strContents = objFile.ReadAll
objFile.Close
If InStr(strContents, "Windows 2000") Then
intFound = intFound + 1
End If
If InStr(strContents, "Windows XP") Then
intFound = intFound + 1
End If
If intFound = 2 Then
Wscript.Echo "The text file contains both Windows 2000 and Windows XP."
Else
Wscript.Echo "The text file does not contain both Windows 2000 and Windows XP."
End If
是的,该脚本的确与前面的脚本很相似。 最大的不同之处在于我们没有使用 True-False 变量;而是使用了一个名为 intFound 的计数器变量。 该脚本首先搜索 Windows 2000;如果找到了该短语,则会将 intFound 加 1。(由于 intFound 开始时为 0,这就意味着此时 intFound 将等于 1。)
然后该脚本将搜索 Windows XP,如果找到了该短语,会将 intFound 的值加 1。最终结果如何呢? 在脚本末尾,只有同时找到了两个目标短语,intFound 才会等于 2;如果 intFound 等于 0 或 1,则表示一个都没找到或只找到了一个目标短语。 此时所要做的就是回显搜索结果。
您好,脚本专家! 您曾经介绍过如何在文本文件中搜索单个词或短语,但如何在文本文件中搜索两个短语呢? 我想知道文件中是否包含 Windows 2000 或 Windows XP。
-- JR
答:
您好,JR。您知道,让脚本专家去做一件事情就已经够困难的了;可见让他们去做两件事情几乎是不可能的。 但我们要告诉您的是: 只要您不介意我们向您介绍一种简单的方法来在文本文件中搜索多个项,我们就会向您介绍如何在文本文件中搜索多个项。
注意。 为什么称之为“简单的方法”呢? 我们不打算费神设置数组或其他某个复杂的框架来进行多个搜索。 相反,我们打算在第一次搜索文件时搜索第一个术语,而后在第二次搜索文件时搜索第二个术语。 这种方法虽不是很好,但却很简单,且很有效。
以下是一小段简单的脚本,它可告诉您是否可在文本文件 C:\Scripts\Text.txt 中找到术语 Windows 2000 或 Windows XP:
复制代码 代码如下:
Const ForReading = 1
blnFound = False
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading)
strContents = objFile.ReadAll
objFile.Close
If InStr(strContents, "Windows 2000") Then
blnFound = True
End If
If InStr(strContents, "Windows XP") Then
blnFound = True
End If
If blnFound Then
Wscript.Echo "Either Windows 2000 or Windows XP appears in this file."
Else
Wscript.Echo "Neither Windows 2000 nor Windows XP appears in this file."
End If
此脚本开头定义了一个名为 ForReading 的常量,并将其值设定为 1;打开文本文件时我们将用到它。 我们还创建了一个名为 blnFound 的变量,并将其值指定为 False;我们将使用此变量来跟踪是否在文件中找到了任意一个搜索术语。 如果至少找到了一个术语,我们就将 blnFound 的值改为 True;否则,该值将保持 False 不变。
接下来我们打开文件 C:\Scripts\Test.txt 进行读取,然后使用 ReadAll 方法将该文件的所有内容读入名为 strContents 的变量中;实际上我们将对存储于内存中的此文件“副本”进行搜索。 由于我们不再需要此物理文件,因此我们调用 Close 方法将该文件关闭。
此时,我们可进行第一次搜索了。 下面这行代码使用 InStr 函数来确定是否可在变量 strContents 中的某个位置找到字符串 Windows 2000:
If InStr(strContents, "Windows 2000") Then
如果 InStr 为 True,则我们将 blnFound 的值设置为 True;如果 InStr 为 False,我们将直接跳至下一个搜索。 在下一个搜索中,我们重复此过程,这次将搜索字符串 Windows XP:
If InStr(strContents, "Windows XP") Then
如果找到了 Windows 2000 或 Windows XP(或二者均找到了),则 blnFound 将为 True;如果两者均未找到,则 blnFound 将仍为 False。 在脚本的末尾,我们检查 blnFound 的值,并指出是否在文件中找到了一个或多个搜索短语。
但如果您想知道文件中是否同时包含这两个搜索短语,该怎么办呢? 我们将不再对此做详细阐述,但下面的脚本可告诉您是否可在文件中同时找到两个目标短语:
Const ForReading = 1
intFound = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading)
strContents = objFile.ReadAll
objFile.Close
If InStr(strContents, "Windows 2000") Then
intFound = intFound + 1
End If
If InStr(strContents, "Windows XP") Then
intFound = intFound + 1
End If
If intFound = 2 Then
Wscript.Echo "The text file contains both Windows 2000 and Windows XP."
Else
Wscript.Echo "The text file does not contain both Windows 2000 and Windows XP."
End If
是的,该脚本的确与前面的脚本很相似。 最大的不同之处在于我们没有使用 True-False 变量;而是使用了一个名为 intFound 的计数器变量。 该脚本首先搜索 Windows 2000;如果找到了该短语,则会将 intFound 加 1。(由于 intFound 开始时为 0,这就意味着此时 intFound 将等于 1。)
然后该脚本将搜索 Windows XP,如果找到了该短语,会将 intFound 的值加 1。最终结果如何呢? 在脚本末尾,只有同时找到了两个目标短语,intFound 才会等于 2;如果 intFound 等于 0 或 1,则表示一个都没找到或只找到了一个目标短语。 此时所要做的就是回显搜索结果。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“用vbscript实现在文本文件中搜索两个项”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新动态
2024年11月23日
2024年11月23日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]