Categorias

Busca recursiva de arquivos

Este sistema que desenvolvi utiliza recursão para iterar por todas as pastas e arquivos do pc Host, desde que possua autorização, em busca de um nome de arquivo definido pelo usuário.

Estão implementadas as buscas exatas, parciais, parciais + conteudo de pasta e inclusão de subpastas(ou não).
Ele totaliza os arquivos encontrados, o total de arquivos e pastas e o tempo que levou para a busca terminar.

Necessita apenas do FSO (File System Object).

<%
'Desenvolvido por Diogo Silvério([email protected])
'Fez alguma Alteração? Poste aqui sem tirar os créditos anteriores.
'A alteração ficou legal?? Manda pra mim o link
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~------
'Esse sisteminha de busca recursiva é parte de um sistema maior que
'tenho trabalhado, é semelhante a um gerenciador de FTP, só que em ASP ^^
'[]'s e lembrem, esse código é livre para N-Finalidades, exceto venda a parte

Option Explicit
On Error Resume Next

Dim nomeBusca, pastaBusca, tipoBusca
Dim resultado,vasculhado, qtdPasta
Dim agora, maistarde, depoisdabusca ':PpPPP
Dim subpastas

agora = (hour(now) * 3600) + (Minute(now) * 60) + Second(now)

resultado = 0
vasculhado = 0
qtdPasta = 0

nomeBusca = Request.Form("txt_busca")
pastaBusca = Request.Form("txt_pasta")
subpastas = Request.Form("subpasta")
tipoBusca = Request.Form("opcao")

efetuaBusca "|-", nomeBusca, pastaBusca, tipoBusca

Sub efetuaBusca(nivel, nome, pastaBusca, tipoBusca)
	Dim objFso, objPasta, objArq
	Dim arquivo, pasta
	
	Set objFso = Server.CreateObject("Scripting.FileSystemObject")
	Set objPasta = objFso.getFolder(pastaBusca)
	
	if(subpastas = 1) then
		For each pasta in objPasta.SubFolders
			Response.Write(nivel & " " & pasta.Name & "
" & VbCRLF) efetuaBusca (nivel & "-"), nome, pasta, tipoBusca qtdPasta = qtdPasta + 1 Next else For each pasta in objPasta.SubFolders Response.Write(nivel & " " & pasta.Name & "
" & VbCRLF) qtdPasta = qtdPasta + 1 next end if For each arquivo in objPasta.Files Select Case tipoBusca Case 0 : if(nomeBusca = nomeBusca) then Response.Write(nivel & " " & arquivo.Name & "
" & VbCRLF) resultado = resultado + 1 end if Case 1 : if(InStr(LCase(arquivo.name), LCase(nomeBusca))) then Response.Write(nivel & " " & arquivo.Name & "
" & VbCRLF) resultado = resultado + 1 end if Case 2 : if((LCase(arquivo.name) = LCase(nomeBusca)) or (InStr(LCase(arquivo.name), LCase(nomeBusca)))) then Response.Write(nivel & " " & arquivo.Name & "
" & VbCRLF) resultado = resultado + 1 else Response.Write(nivel & " " & arquivo.Name & "
" & VbCRLF) End if End Select vasculhado = vasculhado + 1 Next Set objFso = nothing Set objPasta = nothing End Sub maistarde = (hour(now) * 3600) + (Minute(now) * 60) + Second(now) depoisdabusca = maistarde - agora %>
<%=resultado%> ocorrências de '<%=nomeBusca%>' em <%=depoisdabusca%> s.
<%=vasculhado%> arquivos em <%=qtdPasta%> pastas.

Arquivos para Download:

busca.zip