< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<%
rua escura
st=temporizador()
'********************************************** ***********
'*************Classe SearchFile para pesquisar arquivos no disco rígido *************
'******************Método de chamada: *************
'*************Definir newsearch=new SearchFile 'Declaração******************
'****************newsearch.Folder="F:+E:"'Fonte de pesquisa recebida****************** **
'******************newsearch.keyword="Compilação" 'Palavra-chave******************
'************newsearch.Search 'Comece a pesquisar por******************
'******************Definir newsearch=Nada 'Fim****************
'********************************************** ***********
Arquivo de pesquisa de classe
dim Pastas 'Passe no caminho absoluto, use o sinal + para conectar vários caminhos e não deve haver espaços.
dim palavra-chave 'Inserir palavras-chave
dim objFso 'Definir variáveis globais
dim Counter 'Define variáveis globais, o número de resultados da pesquisa
'*****************inicialização******************************* *******
Subclasse Privada_Initialize
Definir objFso=Server.CreateObject("Scripting.FileSystemObject")
Contador=0 'Inicializa contador
Finalizar sub
'********************************************** ************
Subclasse Privada_Terminate
Definir objFso=Nada
Finalizar sub
'******************Membro público, método de chamada**************************** **
Pesquisa de função
Folders=split(Folders,"+") 'Converter para array
palavra-chave=trim(palavra-chave) 'Remover espaços iniciais e finais
se palavra-chave = "" então
Response.Write("<font color='red'>As palavras-chave não podem ficar vazias</font><br/>")
função de saída
terminar se
'Determine se contém caracteres ilegais
flag=instr(palavra-chave,"") ou instr(palavra-chave,"/")
flag=sinalizador ou instr(palavra-chave,":")
flag=sinalizador ou instr(palavra-chave,"|")
flag=sinalizador ou instr(palavra-chave,"&")
if flag then 'As palavras-chave não podem conter /:|&
Response.Write("<font color='red'>As palavras-chave não podem conter /:|&</font><br/>")
Função Exit 'Sair se estiver incluído
terminar se
'Pesquisa de múltiplos caminhos
dimi
para i = 0 para ubound (pastas)
Call GetAllFile(Folders(i)) 'Chama a função recursiva do loop
próximo
Response.Write("Um total de resultados de <font color='red'>"&Counter&"</font> foram encontrados")
Função final
'******************Atravessar arquivos e pastas*************************** * **
Função privada GetAllFile (pasta)
dim objFd,objFs,objFf
Definir objFd = objFso.GetFolder (pasta)
Definir objFs=objFd.SubFolders
Definir objFf=objFd.Files
'Percorrer subpastas
dim strFdName 'Declara o nome da subpasta
'************Percorrer subpastas******
em caso de erro, retome a seguir
Para cada OneDir em objFs
strFdName=OneDir.Nome
'As pastas do sistema não são percorridas
Se strFdName<>"Config.Msi" EQV strFdName<>"RECYCLED" EQV strFdName<>"RECYCLER" EQV strFdName<>"Informações de volume do sistema" Então
SFN=Pasta&""&strFdName 'Caminho absoluto
Call GetAllFile(SFN) 'Chama recursão
Terminar se
Próximo
dim strFlNome
'**********Atravesse os arquivos**********
Para cada OneFile em objFf
strFlName=OneFile.Name
'desktop.ini e folder.htt não estão incluídos na lista
Se strFlName<>"desktop.ini" EQV strFlName<>"folder.htt" Então
FN=Pasta&""&strFlName
Contador=Contador+ColorOn(FN)
Terminar se
Próximo
'******************************
'Fecha cada instância do objeto
Definir objFd=Nada
Definir objFs=Nada
Definir objFf=Nada
Função final
'**********************Gerar padrão de correspondência************************ ******** **********
Função privada CreatePattern (palavra-chave)
CreatePattern=palavra-chave
CreatePattern=Substituir(CreatePattern,".",".")
CreatePattern=Substituir(CreatePattern,"+","+")
CreatePattern=Replace(CreatePattern,"(","(")
CreatePattern=Substituir(CreatePattern,")",")")
CreatePattern=Replace(CreatePattern,"[","[")
CreatePattern=Substituir(CreatePattern,"]","]")
CreatePattern=Replace(CreatePattern,"{","{")
CreatePattern=Replace(CreatePattern,"}","}")
CreatePattern=Replace(CreatePattern,"*","[^\/]*") '* correspondência
CreatePattern=Replace(CreatePattern,"?","[^\/]{1}") '?
CreatePattern="("&CreatePattern&")+" 'Correspondência geral
Função final
'******************************Pesquisa e cores de palavras-chave*************** *** *********
Função privada ColorOn (nome do arquivo)
dim objReg
Definir objReg = novo RegExp
objReg.Pattern=CreatePattern(palavra-chave)
objReg.IgnoreCase = Verdadeiro
objReg.Global=Verdadeiro
retVal=objReg.Test(FileName) 'Executa teste de pesquisa, cor e saída se aprovado
se retVal então
OutPut=objReg.Replace(FileName,"<font color='#FF0000'>$1</font>") 'Define a cor de exibição das palavras-chave
'******************************Esta parte pode ser modificada conforme necessário e a saída********* ****** *********************
OutPut="<a href='#'>"&OutPut&"</a><br/>"
Response.Write(OutPut) 'Saída de resultados correspondentes
'**********************************Fim da parte modificável******** ******************************
ColorOn=1 'Número de contadores adicionados
outro
CorLigada=0
terminar se
Definir objReg=Nada
Função final
Fim da aula
'************************Fim da classe SearchFile********************** **
%>
<html>
<cabeça>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>www.knowsky.com</title>
</head>
<corpo>
<form name="form1" method="post" action="<% =Request.ServerVariables("PATH_INFO")%>">
Palavras-chave:
<input name="palavra-chave" type="texto" id="palavra-chave">
<input type="submit" name="Enviar" value="Pesquisar">
<a href="help.htm" target="_blank">Ajuda da pesquisa avançada</a>
</form>
<%
palavra-chave esmaecida
palavra-chave=Request.Form("palavra-chave")
se palavra-chave<>""então
Definir newsearch = novo SearchFile
newsearch.Folders="E:Mídia+F:"
newsearch.keyword=palavra-chave
nova pesquisa. Pesquisa
Definir newsearch=Nada
response.Write("<br/>Demorado: "&(timer()-st)*1000&"ms")
terminar se
%>
</body>
</html>