数据读取中...
 您当前位置:惠州维修 -> 网络-> asp技术交流 文章搜索:  
如何使用FSO搜索硬盘文件
作者:转载 来源:惠州维修
日期: 2004-11-3
放大字体显示 缩小字体显示 打印文章 推荐给朋友
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 
<% 
dim st 
st=timer() 
’************************************************************* 
’*************搜索硬盘文件的类SearchFile         ************* 
’*************调用方法:                          *************  
’*************Set newsearch=new SearchFile ’声明 *************  
’*************newsearch.Folder="F:+E:"’传入搜索源*************  
’*************newsearch.keyword="汇编"    ’关键词*************  
’*************newsearch.Search          ’开始搜索*************  
’*************Set newsearch=Nothing         ’结束*************       
’************************************************************* 
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>www.knowsky.com</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> 
文章页数:[1] 
帮助你我他: 1.我有问题请教 2.我要投稿>>>
更多相关资料搜索:
热点文章
最新文章
相关文章
版权申明:除部分特别声明不要转载,或者授权本站独家播发的文章外,大家可以自由转载本站的原创文章,但原作者和来自本站的链接必须保留(非本站原创的,按照原来自一节,自行链接)。文章版权归本站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去本站水印。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论  打印  刷新  推荐给朋友  返回顶部  关闭

网上大名: