硬盘文件搜索代码(ASP类)
时间:2019-11-01 12:56 来源/作者:asp代码网
-
<%@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:
-
'*************************************************************
-
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>
相关文章
热门资讯