一个用vbs查找硬盘所有分区中的指定程序的代码

时间:2021-05-22

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><!--"
.write"body{background:#000000;text-align:center;margin:0pxauto;}"
.write"*{font-family:Arial;font-size:9pt;color:#00cc00;line-height:140%;}"
.write"a:link,ahover,a:visited{text-decoration:none;}"
.write"#scanstatus{text-align:left;margin:15px;}"
.write"#header{width:100%;height:20px;}"
.write"#middle{width:100%;height:50px;}"
.write"#footer{width:100%;height:20px;text-align:right;}"
.write"--></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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章