分享
 
 
 

硬盘文件搜索代码(ASP类)

王朝asp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>

<%

dim st

st=timer()

'*************************************************************

'*************搜索硬盘文件的类SearchFile *************

'*************调用方法: *************

'*************Set newsearch=new SearchFile '声明 *************

'*************newsearch.Folder="F:+E:"'传入搜索源*************

'*************newsearch.keyword="汇编" '关键词*************

'*************newsearch.Search '开始搜索*************

'*************Set newsearch=Nothing '结束*************

'*************Copyright(c)醉雨梧桐小站 *************

'*************http://btyz.51web.cn/ *************

'*************************************************************

Class SearchFile

dim Folders '传入绝对路径,多路径使用+号连接,不能有空格

dim keyword '传入关键词

dim objFso '定义全局变量

dim Counter '定义全局变量,搜索结果的数目

'*****************初始化**************************************

Private Sub Class_Initialize

Set objFso=Server.CreateObject("Scripting.FileSystemObject")

Counter=0 '初始化计数器

End Sub

'************************************************************

Private Sub Class_Terminate

Set objFso=Nothing

End Sub

'**************公有成员,调用的方法***************************

Function Search

Folders=split(Folders,"+") '转化为数组

keyword=trim(keyword) '去掉前后空格

if keyword="" then

Response.Write("<font color='red'>关键字不能为空</font><br/>")

exit Function

end if

'判断是否包含非法字符

flag=instr(keyword,"\") or instr(keyword,"/")

flag=flag or instr(keyword,":")

flag=flag or instr(keyword,"|")

flag=flag or instr(keyword,"&")

if flag then '关键字中不能包含\/:|&

Response.Write("<font color='red'>关键字不能包含/\:|&</font><br/>")

Exit Function '如果包含有这个则退出

end if

'多路径搜索

dim i

for i=0 to ubound(Folders)

Call GetAllFile(Folders(i)) '调用循环递归函数

next

Response.Write("共搜索到<font color='red'>"&Counter&"</font>个结果")

End Function

'***************历遍文件和文件夹******************************

Private Function GetAllFile(Folder)

dim objFd,objFs,objFf

Set objFd=objFso.GetFolder(Folder)

Set objFs=objFd.SubFolders

Set objFf=objFd.Files

'历遍子文件夹

dim strFdName '声明子文件夹名

'*********历遍子文件夹******

on error resume next

For Each OneDir In objFs

strFdName=OneDir.Name

'系统文件夹不在历遍之列

If strFdName<>"Config.Msi" EQV strFdName<>"RECYCLED" EQV strFdName<>"RECYCLER" EQV strFdName<>"System Volume Information" Then

SFN=Folder&"\"&strFdName '绝对路径

Call GetAllFile(SFN) '调用递归

End If

Next

dim strFlName

'**********历遍文件********

For Each OneFile In objFf

strFlName=OneFile.Name

'desktop.ini和folder.htt不在列取范围

If strFlName<>"desktop.ini" EQV strFlName<>"folder.htt" Then

FN=Folder&"\"&strFlName

Counter=Counter+ColorOn(FN)

End If

Next

'***************************

'关闭各对象实例

Set objFd=Nothing

Set objFs=Nothing

Set objFf=Nothing

End Function

'*********************生成匹配模式***********************************

Private Function CreatePattern(keyword)

CreatePattern=keyword

CreatePattern=Replace(CreatePattern,".","\.")

CreatePattern=Replace(CreatePattern,"+","\+")

CreatePattern=Replace(CreatePattern,"(","\(")

CreatePattern=Replace(CreatePattern,")","\)")

CreatePattern=Replace(CreatePattern,"[","\[")

CreatePattern=Replace(CreatePattern,"]","\]")

CreatePattern=Replace(CreatePattern,"{","\{")

CreatePattern=Replace(CreatePattern,"}","\}")

CreatePattern=Replace(CreatePattern,"*","[^\\\/]*") '*号匹配

CreatePattern=Replace(CreatePattern,"?","[^\\\/]{1}") '?号匹配

CreatePattern="("&CreatePattern&")+" '整体匹配

End Function

'**************************搜索并使关键字上色*************************

Private Function ColorOn(FileName)

dim objReg

Set objReg=new RegExp

objReg.Pattern=CreatePattern(keyword)

objReg.IgnoreCase=True

objReg.Global=True

retVal=objReg.Test(FileName) '进行搜索测试,如果通过则上色并输出

if retVal then

OutPut=objReg.Replace(FileName,"<font color='#FF0000'>$1</font>") '设置关键字的显示颜色

'***************************该部分可以根据需要修改输出************************************

OutPut="<a href='#'>"&OutPut&"</a><br/>"

Response.Write(OutPut) '输出匹配的结果

'*************************************可修改部分结束**************************************

ColorOn=1 '加入计数器的数目

else

ColorOn=0

end if

Set objReg=Nothing

End Function

End Class

'************************结束类SearchFile**********************

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>Media搜索</title>

</head>

<body>

<form name="form1" method="post" action="<% =Request.ServerVariables("PATH_INFO")%>">

关键词:

<input name="keyword" type="text" id="keyword">

<input type="submit" name="Submit" value="搜索">

<a href="help.htm" target="_blank">高级搜索帮助</a>

</form>

<%

dim keyword

keyword=Request.Form("keyword")

if keyword<>"" then

Set newsearch=new SearchFile

newsearch.Folders="E:\Media+F:"

newsearch.keyword=keyword

newsearch.Search

Set newsearch=Nothing

response.Write("<br/>费时:"&(timer()-st)*1000&"毫秒")

end if

%>

</body>

</html>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有