代碼如下:
on error resume next '忽略所有錯誤
dim filename '聲明變量
dim re
set re=new regexp '建立正則表達(dá)式對象實例
re.pattern=^([a-z]|[a-z])+\:\\\w+\.vbs$
if re.test(wscript.scriptfullname)=false then
msgbox 請在磁盤根目錄下運行本程序,否則搜索結(jié)果可能會不正確!,,messagebox
wscript.quit
end if
re.pattern=^([a-za-z0-9_]|[^\x00-\xff])+\.[a-za-z]{1,4}$ '聲明正則表達(dá)式的匹配模式,主要用來檢驗用戶輸入的文件名是否正確
do
filename=inputbox(請輸入你要搜索的文件名:,messagebox)
if filename= then wscript.quit '如果輸入為空則退出腳本
if re.test(filename)=false then
msgbox 請輸入合法的文件名!,,messagebox
end if
loop while re.test(filename)=false '直到用戶輸入正確的文件名時才跳出循環(huán)。
set re=nothing
dim ie
set ie=wscript.createobject(internetexplorer.application) '建立ie對象,用來顯示搜索狀態(tài)
ie.menubar=0 '不顯示ie對象菜單欄
ie.addressbar=0 '不顯示ie對象地址欄
ie.toolbar=0 '不顯示ie對象工具欄
ie.statusbar=0 '不顯示ie對象狀態(tài)欄
ie.fullscreen=1 '全屏化ie對象
ie.width=640 '設(shè)置ie對象寬度
ie.height=120 '設(shè)置ie對象高度
ie.resizable=0 '設(shè)置ie對象大小是否可以被改動
ie.navigate about:blank '設(shè)置ie對象默認(rèn)指向的頁面
ie.left=fix((ie.document.parentwindow.screen.availwidth-ie.width)/2) '設(shè)置ie對象左邊距
ie.top=fix((ie.document.parentwindow.screen.availheight-ie.height)/2) '設(shè)置ie對象右邊距
ie.visible=1 '設(shè)置ie對象是否可視
with ie.document '以下為在ie對象中寫入頁面,跟一般的html沒有區(qū)別
.write <html>
.write <head>
.write <title>文件掃描狀態(tài)</title>
.write <meta http-equiv=content-type content=text/html;charset=gb2312>
.write <style><!--
.write body { background:#000000;text-align:center;margin:0px auto; }
.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 <body scroll=no>
.write <div id=scanstatus>
.write <div id=header>正在啟動搜索程序。。。</div>
.write <div id=middle></div>
.write <div id=footer><a href=# onclick=window.close()>退出程序</a></div>
.write </div>
.write </body>
.write </html>
end with
'定義文件系統(tǒng)對象變量
dim fso
dim objfolder
dim objsubfolders
dim objsubfolder
dim objfiles
dim objfile
dim objdrives
dim objdrive
dim objtextfile
dim str:str=
dim i:i=0 '計數(shù)器變量
dim result
result=e:\搜索結(jié)果.html '搜索結(jié)果保存文件變量
'一個過程,用來遍歷硬盤文件
function search(path)
set objfolder=fso.getfolder(path) '獲得當(dāng)前路徑
set objfiles=objfolder.files '獲得當(dāng)前路徑下的所有文件集合
for each objfile in objfiles '開始遍歷文件集合
ie.document.getelementbyid(middle).innerhtml=objfile.path '用到ie對象的文檔對象模型,將當(dāng)前搜索的文件路徑寫入id為middle的div中
if objfile.name=filename then '如果當(dāng)前文件名與用戶輸入的文件名一致
i=i+1 '計數(shù)器加一
str=str & objfile.path & <br>
set objtextfile=fso.opentextfile(result,2,true) '創(chuàng)建文本流對象,文件名為變量result所存儲的字符串
objtextfile.write(str) '將變量str中的文件路徑寫入html文件中
objtextfile.close '關(guān)閉文本流對象
set objtextfile=nothing '銷毀對象
end if
if i>0 then
ie.document.getelementbyid(header).innerhtml=找到 & i & 個匹配,詳細(xì)信息已保存在 & result & 文件中。。。
else
ie.document.getelementbyid(header).innerhtml=正在執(zhí)行文件搜索。。。
end if
wscript.sleep(20)
next
set objsubfolders=objfolder.subfolders '得到當(dāng)前路徑下的所有文件夾的集合
for each objsubfolder in objsubfolders '遍歷文件夾
nowpath=path & \ & objsubfolder.name '得到新的文件路徑
search nowpath '調(diào)用函數(shù)自身,從新的路徑開始搜索
next
end function
set fso=createobject(scripting.filesystemobject)
set objdrives=fso.drives '取得當(dāng)前計算機(jī)的所有磁盤驅(qū)動器
for each objdrive in objdrives '遍歷磁盤
search objdrive '調(diào)用函數(shù)
next
'結(jié)束時顯示的信息
ie.document.getelementbyid(header).innerhtml=掃描已結(jié)束。。。
if i>0 then
ie.document.getelementbyid(middle).innerhtml=請打開 & result & 查看詳細(xì)搜索結(jié)果!
else
ie.document.getelementbyid(middle).innerhtml=沒有找到要搜索的文件!
end if
'銷毀對象變量,釋放內(nèi)存空間
set objdrives=nothing
set objfiles=nothing
set objfile=nothing
set objdrive=nothing
set objfolders=nothing
set objfolder=nothing
set objsubfolders=nothing
set objsubfolder=nothing
set fso=nothing