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.