Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Este artigo passo-a-passo demonstra como utilizar a classe FileSystemObject para procurar directórios recursivamente e localizar ficheiros específicos.
A classe FileSystemObject está localizada no Microsoft Scripting Runtime (Scrrun.dll). Para obter o ficheiro Scrrun.dll, instale qualquer um dos pacotes seguintes:
Microsoft Windows Script Host
Microsoft Windows NT Option Pack
Microsoft Internet Information Server 3.0
Actualização do Scripting 3.1
Microsoft Visual Studio 98
Microsoft Visual Basic 6.0
A classe FileSystemObject proporciona um desempenho superior ao da utilização das funções intrínsecas do Visual Basic, tais como Dir e GetAttr. Para além disso, FileSystemObject é muito mais simples de implementar do que as funções intrínsecas do Visual Basic.
Crie um novo projecto EXE Padrão no Visual Basic. Por predefinição, é criado o Form1.
No menu Project, clique em References e, em seguida, adicione uma referência ao Microsoft Scripting Runtime. Se esta opção não estiver listada, localize o ficheiro Scrrun.dll no seu sistema. Se for necessário, instale uma das ferramentas listadas na secção Informações Sobre a Classe FileSystemObject.
Adicione um CommandButton, a Label e um controlo ListBox ao Form1. Ajuste a largura do controlo Label de modo a que seja igual à largura do formulário.
Adicione o código seguinte à secção General Declarations do Form1:
Option Explicit
Dim fso As New FileSystemObject
Dim fld As Folder
Private Sub Command1_Click()
Dim nDirs As Long, nFiles As Long, lSize As Currency
Dim sDir As String, sSrchString As String
sDir = InputBox("Type the directory that you want to search for", _
"FileSystemObjects example", "C:\")
sSrchString = InputBox("Type the file name that you want to search for", _
"FileSystemObjects example", "vb.ini")
MousePointer = vbHourglass
Label1.Caption = "Searching " & vbCrLf & UCase(sDir) & "..."
lSize = FindFile(sDir, sSrchString, nDirs, nFiles)
MousePointer = vbDefault
MsgBox Str(nFiles) & " files found in" & Str(nDirs) & _
" directories", vbInformation
MsgBox "Total Size = " & lSize & " bytes"
End Sub
Private Function FindFile(ByVal sFol As String, sFile As String, _
nDirs As Long, nFiles As Long) As Currency
Dim tFld As Folder, tFil As File, FileName As String
On Error GoTo Catch
Set fld = fso.GetFolder(sFol)
FileName = Dir(fso.BuildPath(fld.Path, sFile), vbNormal Or _
vbHidden Or vbSystem Or vbReadOnly)
While Len(FileName) <> 0
FindFile = FindFile + FileLen(fso.BuildPath(fld.Path, _
FileName))
nFiles = nFiles + 1
List1.AddItem fso.BuildPath(fld.Path, FileName) ' Load ListBox
FileName = Dir() ' Get next file
DoEvents
Wend
Label1 = "Searching " & vbCrLf & fld.Path & "..."
nDirs = nDirs + 1
If fld.SubFolders.Count > 0 Then
For Each tFld In fld.SubFolders
DoEvents
FindFile = FindFile + FindFile(tFld.Path, sFile, nDirs, nFiles)
Next
End If
Exit Function
Catch: FileName = ""
Resume Next
End Function
Execute o projecto e clique em Command1.
Introduza o nome do directório e o nome do ficheiro a procurar. Repare que, quando cada ficheiro é encontrado, o respectivo nome é adicionado à caixa de listagem. Quando o processo estiver concluído, o número de ficheiros encontrado é apresentado numa caixa de mensagem. O tamanho total dos ficheiros também é apresentado.
Alguns ficheiros e directórios, tais como Informações de Volume de Sistema no Microsoft Windows XP, podem causar uma violação de acesso se uma aplicação lhes tentar aceder. O código de processamento de erros pára de procurar num directório quando ocorre um problema. Tem de utilizar outra abordagem se necessitar de uma resolução mais robusta.
Se utilizar um filtro de ficheiro (tal como *.*), poderá ser devolvido um número de ficheiros muito grande. O controlo ListBox só pode conter um número limitado de caracteres. Quando esse limite é alcançado, não são adicionadas mais entradas à caixa de listagem.
Este código de exemplo foi testado utilizando a versão 5.6.0.6626 do Microsoft Scripting Runtime (Scrrun.dll). Se ocorrerem problemas, poderá ter de transferir uma versão mais recente deste ficheiro.
Para obter informações adicionais sobre outros métodos que poderá utilizar para localizar um ficheiro específico, clique no número de artigo existente abaixo para visualizar o artigo na Base de Dados de Conhecimento Microsoft:
185476
(http://support.microsoft.com/kb/185476/
)
COMO: Pesquisar Directórios para Localizar ou Listar Ficheiros
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
O que podemos fazer para melhor estas informações?
Para proteger a sua privacidade, não inclua as informações de contacto nos comentários.
Obrigado! Os seus comentários serão utilizados para nos ajudar a melhorar o conteúdo do suporte. Para obter mais opções de assistência, visite a Home Page da Ajuda e Suporte.