OnErrorResumeNext'忽略所有错误
Dimfilename'声明变量
Dimre
Setre=NewRegExp'建立正则表达式对象实例
re.Pattern="^([a-z]|[A-Z])+:w+.vbs$"
Ifre.Test(WScript.ScriptFullName)=FalseThen
MsgBox"请在磁盘根目录下运行本程序,否则搜索结果可能会不正确!",,"MessageBox"
WScript.Quit
EndIf
re.Pattern="^([A-Za-z0-9_]|[^x00-xff])+.[a-zA-Z]{1,4}$"'声明正则表达式的匹配模式,主要用来检验用户输入的文件名是否正确
Do
filename=InputBox("请输入你要搜索的文件名:","MessageBox")
Iffilename=""ThenWScript.Quit'如果输入为空则退出脚本
Ifre.Test(filename)=FalseThen
MsgBox"请输入合法的文件名!",,"MessageBox"
EndIf
LoopWhilere.Test(filename)=False'直到用户输入正确的文件名时才跳出循环。
Setre=Nothing
Dimie
Setie=WScript.CreateObject("internetexplorer.application")'建立IE对象,用来显示搜索状态
ie.menubar=0'不显示IE对象菜单栏
ie.AddressBar=0'不显示IE对象地址栏
ie.ToolBar=0'不显示IE对象工具栏
ie.StatusBar=0'不显示IE对象状态栏
ie.FullScreen=1'全屏化IE对象
ie.Width=640'设置IE对象宽度
ie.Height=120'设置IE对象高度
ie.Resizable=0'设置IE对象大小是否可以被改动
ie.Navigate"about:blank"'设置IE对象默认指向的页面
ie.Left=Fix((ie.Document.parentwindow.screen.availwidth-ie.Width)/2)'设置IE对象左边距
ie.top=Fix((ie.document.parentwindow.screen.availheight-ie.height)/2)'设置IE对象右边距
ie.visible=1'设置IE对象是否可视
Withie.Document'以下为在IE对象中写入页面,跟一般的HTML没有区别
.write"<html>"
.write"<head>"
.write"<title>文件扫描状态</title>"
.write"<metahttp-equiv=""content-type""content=""text/html;charset=gb2312"">"
.write"<style><></style>"
.write"</head>"
.write"<bodyscroll=no>"
.write"<divid=""scanstatus"">"
.write"<divid=""header"">正在启动搜索程序。。。</div>"
.write"<divid=""middle""></div>"
.write"<divid=""footer""><ahref=""#""onclick=""window.close()"">退出程序</a></div>"
.write"</div>"
.write"</body>"
.write"</html>"
EndWith
'定义文件系统对象变量
Dimfso
Dimobjfolder
Dimobjsubfolders
Dimobjsubfolder
Dimobjfiles
Dimobjfile
Dimobjdrives
Dimobjdrive
Dimobjtextfile
Dimstr:str=""
Dimi:i=0'计数器变量
Dimresult
result="C:搜索结果.html"'搜索结果保存文件变量
'一个过程,用来遍历硬盘文件
Functionsearch(path)
Setobjfolder=fso.getfolder(path)'获得当前路径
Setobjfiles=objfolder.Files'获得当前路径下的所有文件集合
ForEachobjfileInobjfiles'开始遍历文件集合
ie.Document.getElementById("middle").innerHTML=objfile.Path'用到IE对象的文档对象模型,将当前搜索的文件路径写入ID为middle的DIV中
Ifobjfile.Name=filenameThen'如果当前文件名与用户输入的文件名一致
i=i+1'计数器加一
str=str&objfile.Path&"<br>"
Setobjtextfile=fso.OpenTextFile(result,2,True)'创建文本流对象,文件名为变量result所存储的字符串
objtextfile.Write(str)'将变量str中的文件路径写入html文件中
objtextfile.Close'关闭文本流对象
Setobjtextfile=Nothing'销毁对象
EndIf
Ifi>0Then
ie.Document.getElementById("header").innerHTML="找到"&i&"个匹配,详细信息已保存在"""&result&"""文件中。。。"
Else
ie.Document.getElementById("header").innerHTML="正在执行文件搜索。。。"
EndIf
WScript.Sleep(20)
Next
Setobjsubfolders=objfolder.SubFolders'得到当前路径下的所有文件夹的集合
ForEachobjsubfolderInobjsubfolders'遍历文件夹
nowpath=path&""&objsubfolder.Name'得到新的文件路径
searchnowpath'调用函数自身,从新的路径开始搜索
Next
EndFunction
Setfso=CreateObject("scripting.filesystemobject")
Setobjdrives=fso.Drives'取得当前计算机的所有磁盘驱动器
ForEachobjdriveInobjdrives'遍历磁盘
searchobjdrive'调用函数
Next
'结束时显示的信息
ie.Document.getElementById("header").innerHTML="扫描已结束。。。"
Ifi>0Then
ie.Document.getElementById("middle").innerHTML="请打开"""&result&"""查看详细搜索结果!"
Else
ie.Document.getElementById("middle").innerHTML="没有找到要搜索的文件!"
EndIf
'销毁对象变量,释放内存空间
Setobjdrives=Nothing
Setobjfiles=Nothing
Setobjfile=Nothing
Setobjdrive=Nothing
Setobjfolders=Nothing
Setobjfolder=Nothing
Setobjsubfolders=Nothing
Setobjsubfolder=Nothing
Setfso=Nothing