文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
asp中有关字符编码转换的几个函数
绝妙的asp生成静态页面html函数
Asp计算页面执行时间
一个简单的用存储过程分页
将asp页面转换成htm页面
ASP网站漏洞解析及黑客入侵防范方法
URL编码与SQL注入
几种常用排序算法(asp)
ASP调用带参数存储过程的几种方式
实用的ASP连接数据库的函数
ASP如何获取真实IP地址
ASP中怎么实现SQL数据库备份、恢复
判断Cookies是否处于开启状态
怎样才能将服务器端文件夹下的文件,..
几行Asp代码实现防止表单重复提交
用ASP设计网站在线人数统计程序
asp论坛在线人数统计研究
如何用ASP远程在数据库中创建Table
用ASP调用SQL Server的视图和存储过程
Asp与XML的关系
ASP读取EXCEL
在ASP中使用Oracle数据库技巧
一个通过web.Mail发送邮件的类
几种打开记录集方式的比较
购物车范例(购物车页面 )
如何使用FSO搜索硬盘文件
GB码和BIG5码的互换技术
用ASP开发WEB日期选择器
一个投票系统的源程序(coveryourasp.c..
列出服务器上的打印机


技术教程 -> ASP教程 ->  
如何使用FSO搜索硬盘文件
来源:转载   人气:1683   录入时间:2007-11-8
    <%@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.china-u.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>




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987