- <%@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>
硬盘文件搜索代码(ASP类)
2019-11-01 12:56asp代码网 ASP教程
硬盘文件搜索代码(ASP类)
延伸 · 阅读
- 2019-11-01在ASP中使用FSO组件生成HTML页面
- 2019-11-01用asp实现的代码批量修改程序,fso相关
- 2019-11-01asp 中常用的文件处理函数
- 2019-10-31ASP中FSO对象对IIS WEB服务器数据安全的威胁及对策
- 2019-10-31用ASP实现对MP3曲目信息的操作
- 2019-10-31ASP中文本文件与数据库文件的数据交换(FSO)
精彩推荐
- ASP教程
FSO的强大功能
FSO的强大功能 ...
- ASP教程
用ASP创建日志文件(附源程序)
你是否有时想知道什么人访问你的站点,什么时间,IP地址等。下面我就这个问题向大家来阐述一下。...
- ASP教程
将ASP记录集输出成n列的表格形式显示的方法
asp 表格形式显示数据,方便多行多列内容的输出。 ...
- ASP教程
ASP UTF-8编码下字符串截取和获取长度函数
截取文字长度函数,支持UTF-8 ,这样就可以满意大部分截取字符串的朋友了。...
- ASP教程
ASP实现加法验证码
这篇文章主要介绍了ASP实现加法验证码,是在原来的验证码基础上进行创新,将验证码改为加法运算,感兴趣的小伙伴们可以参考一下...
- ASP教程
关于ASP生成伪参数技巧 简洁实用的伪(僞)参数
简洁实用的伪(僞)参数 前两天在做一个站内版的企搜引擎,发现某些站点可以链接站点内容。。 奇怪之下看了看,原来是按照数据库ID的自动编号规律进...
- ASP教程
Asp中Server.ScriptTimeOut属性需要注意的一点分析
Server.ScriptTimeout 这个属性给定Asp脚本执行的最大时间,如果asp程序的运行时间超过了这个属性规定的值,Asp就会报错。...
- ASP教程
asp上传带显示的代码
一个不错的asp上传类代码,可以显示上传进度 ...