服务器之家

服务器之家 > 正文

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

时间:2019-11-01 12:56     来源/作者:asp代码网
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>  
  2. <%  
  3. dim st  
  4. st=timer()  
  5. '*************************************************************  
  6. '*************搜索硬盘文件的类SearchFile *************  
  7. '*************调用方法: *************  
  8. '*************Set newsearch=new SearchFile '声明 *************  
  9. '*************newsearch.Folder="F:+E:"'传入搜索源*************  
  10. '*************newsearch.keyword="汇编" '关键词*************  
  11. '*************newsearch.Search '开始搜索*************  
  12. '*************Set newsearch=Nothing '结束*************  
  13. '*************Copyright(c)醉雨梧桐小站 *************  
  14. '*************http://btyz.51web.cn/ *************  
  15. '*************************************************************  
  16. Class SearchFile  
  17. dim Folders '传入绝对路径,多路径使用+号连接,不能有空格  
  18. dim keyword '传入关键词  
  19. dim objFso '定义全局变量  
  20. dim Counter '定义全局变量,搜索结果的数目  
  21. '*****************初始化**************************************  
  22. Private Sub Class_Initialize  
  23. Set objFso=Server.CreateObject("Scripting.FileSystemObject")  
  24. Counter=0 '初始化计数器  
  25. End Sub  
  26. '************************************************************  
  27. Private Sub Class_Terminate  
  28. Set objFso=Nothing  
  29. End Sub  
  30. '**************公有成员,调用的方法***************************  
  31. Function Search  
  32. Folders=split(Folders,"+") '转化为数组  
  33. keyword=trim(keyword) '去掉前后空格  
  34. if keyword="" then  
  35. Response.Write("<font color='red'>关键字不能为空</font><br/>")  
  36. exit Function  
  37. end if  
  38. '判断是否包含非法字符  
  39. flag=instr(keyword,"\") or instr(keyword,"/")  
  40. flag=flag or instr(keyword,":")  
  41. flag=flag or instr(keyword,"|")  
  42. flag=flag or instr(keyword,"&")  
  43.  
  44. if flag then '关键字中不能包含\/:|&  
  45. Response.Write("<font color='red'>关键字不能包含/\:|&</font><br/>")  
  46. Exit Function '如果包含有这个则退出  
  47. end if  
  48. '多路径搜索  
  49. dim i  
  50. for i=0 to ubound(Folders)  
  51. Call GetAllFile(Folders(i)) '调用循环递归函数  
  52. next  
  53. Response.Write("共搜索到<font color='red'>"&Counter&"</font>个结果")  
  54. End Function  
  55. '***************历遍文件和文件夹******************************  
  56. Private Function GetAllFile(Folder)  
  57. dim objFd,objFs,objFf  
  58. Set objFd=objFso.GetFolder(Folder)  
  59. Set objFs=objFd.SubFolders  
  60. Set objFf=objFd.Files  
  61. '历遍子文件夹  
  62. dim strFdName '声明子文件夹名  
  63. '*********历遍子文件夹******  
  64. on error resume next  
  65. For Each OneDir In objFs  
  66. strFdName=OneDir.Name  
  67. '系统文件夹不在历遍之列  
  68. If strFdName<>"Config.Msi" EQV strFdName<>"RECYCLED" EQV strFdName<>"RECYCLER" EQV strFdName<>"System Volume Information" Then  
  69. SFN=Folder&"\"&strFdName '绝对路径  
  70. Call GetAllFile(SFN) '调用递归  
  71. End If  
  72. Next  
  73. dim strFlName  
  74. '**********历遍文件********  
  75. For Each OneFile In objFf  
  76. strFlName=OneFile.Name  
  77. 'desktop.ini和folder.htt不在列取范围  
  78. If strFlName<>"desktop.ini" EQV strFlName<>"folder.htt" Then  
  79. FN=Folder&"\"&strFlName  
  80. Counter=Counter+ColorOn(FN)  
  81. End If  
  82. Next  
  83. '***************************  
  84. '关闭各对象实例  
  85. Set objFd=Nothing  
  86. Set objFs=Nothing  
  87. Set objFf=Nothing  
  88. End Function  
  89. '*********************生成匹配模式***********************************  
  90. Private Function CreatePattern(keyword)  
  91. CreatePattern=keyword  
  92. CreatePattern=Replace(CreatePattern,".","\.")  
  93. CreatePattern=Replace(CreatePattern,"+","\+")  
  94. CreatePattern=Replace(CreatePattern,"(","\(")  
  95. CreatePattern=Replace(CreatePattern,")","\)")  
  96. CreatePattern=Replace(CreatePattern,"[","\[")  
  97. CreatePattern=Replace(CreatePattern,"]","\]")  
  98. CreatePattern=Replace(CreatePattern,"{","\{")  
  99. CreatePattern=Replace(CreatePattern,"}","\}")  
  100. CreatePattern=Replace(CreatePattern,"*","[^\\\/]*") '*号匹配  
  101. CreatePattern=Replace(CreatePattern,"?","[^\\\/]{1}") '?号匹配  
  102. CreatePattern="("&CreatePattern&")+" '整体匹配  
  103. End Function  
  104. '**************************搜索并使关键字上色*************************  
  105. Private Function ColorOn(FileName)  
  106. dim objReg  
  107. Set objReg=new RegExp  
  108. objReg.Pattern=CreatePattern(keyword)  
  109. objReg.IgnoreCase=True  
  110. objReg.Global=True  
  111. retVal=objReg.Test(FileName) '进行搜索测试,如果通过则上色并输出  
  112. if retVal then  
  113. OutPut=objReg.Replace(FileName,"<font color='#FF0000'>$1</font>") '设置关键字的显示颜色  
  114. '***************************该部分可以根据需要修改输出************************************  
  115. OutPut="<a href='#'>"&OutPut&"</a><br/>"  
  116. Response.Write(OutPut) '输出匹配的结果  
  117. '*************************************可修改部分结束**************************************  
  118. ColorOn=1 '加入计数器的数目  
  119. else  
  120. ColorOn=0  
  121. end if  
  122. Set objReg=Nothing  
  123. End Function  
  124. End Class  
  125. '************************结束类SearchFile**********************  
  126. %>  
  127. <html>  
  128. <head>  
  129. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
  130. <title>Media搜索</title>  
  131. </head>  
  132.  
  133. <body>  
  134. <form name="form1" method="post" action="<% =Request.ServerVariables("PATH_INFO")%>">  
  135. 关键词:  
  136. <input name="keyword" type="text" id="keyword">  
  137. <input type="submit" name="Submit" value="搜索">  
  138. <a href="help.htm" target="_blank">高级搜索帮助</a>  
  139. </form>  
  140. <%  
  141. dim keyword  
  142. keyword=Request.Form("keyword")  
  143. if keyword<>"" then  
  144. Set newsearch=new SearchFile  
  145. newsearch.Folders="E:\Media+F:"  
  146. newsearch.keyword=keyword  
  147. newsearch.Search  
  148. Set newsearch=Nothing  
  149. response.Write("<br/>费时:"&(timer()-st)*1000&"毫秒")  
  150. end if  
  151.  
  152. %>  
  153. </body>  
  154. </html>  
标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
返回顶部