USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Contar arquivos
Josefh Hennyere
Pontos: 2843
SALVADOR
BA - BRASIL
Postada em 10/04/2005 04:07 hs         
Como faço para contar os arquivos dentro de um drive? Explo:
 
msgbox Contaarquivos("C:")
 
Retornaria = "12000" que corresponde a quantidade de arquivos que possua no Drive C
     
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
ENUNCIADA !
Postada em 10/04/2005 20:01 hs            
Inclue referencia ao FSO...
 
Public Function ContaArquivos(Driver as String) as Long
  Dim FSO as FileSystemObject
  Dim Pasta as Folder, SubPasta as Folder
  Dim Cont as Long
 
  Set FSO = New FileSystemObject
  Set Pasta = FSO.GetFolder(Driver) 'obtem a raiz
  Cont = Cont + Pasta.Files.Count
 
  For Each SubPasta In Pasta.SubFolders
    DoEvents 'retira se nao quiser um escape
    'se vc retirar o DoEvents, pode ser que trave ou fique lento demais...
    Cont = Cont + ContaArquivos(SubPasta.Path) 'conta os arquivos em cada pasta
  Next
 
  ContaArquivos = Cont 'retorna o total de arquivos...
End Function
 
Se quiser, implementa o tratamento de erros...
 
Não costumo dar codigo pronto assim, mas tenho esse pronto, então está ai...
 
Abraços...


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

TÓPICO EDITADO
 
Josefh Hennyere
Pontos: 2843
SALVADOR
BA - BRASIL
ENUNCIADA !
Postada em 11/04/2005 04:38 hs         
Tentei usar
Private Sub Form_Load()
    MsgBox ContaArquivos("C:")
End Sub
RETORNOU O ERRO:
RUNTIME ERROR "70"
PERMISION DANIED
 
 
 
   
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
Postada em 11/04/2005 10:21 hs         
 
Private Function funContaArquivos(strPastaOrigem As String) As Long
  'Cria instância do FSO
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFolderOrigem = objFSO.GetFolder(strPastaOrigem)
  Set objFoldersSubOrig = objFolderOrigem.SubFolders
  'Para cada pasta na coleção de subpastas da pasta origem
  For Each objFolder In objFoldersSubOrig
    'Chama recursivo enquanto tiver subpasta
    funContaArquivos = funContaArquivos(objFolder.Path)
    'Para cada arquivo na coleção de arquivos da pasta
    For Each objFile In objFolder.Files
      funContaArquivos = funContaArquivos + 1
    Next
  Next
End Function
 
Private Sub Form_Load()
 MsgBox funContaArquivos("U:")
End Sub
 
 
 
     
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 12/04/2005 11:51 hs            
Nunca tinha tentado ler toda a unidade, sempre usei esse codigo para ler apenas uma pasta e suas subpastas, mas hoje testei o codigo para ler todo o driver C:, e encontrei o mesmo erro de "Permission Denied"
 
Depurando o codigo, encontrei o seguinte: Executa normalmente em todas as pastas do sistema. O erro está quando tenta ler a pasta System Volume Information. Parece que o sistema (windows) nao permite acessar esta pasta...
 
Não sei o que está provocando esse erro... se voce descobrir, ou se alguem souber, me avisa que tambem nao sei o que está acontecendo
 
Flw


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

TÓPICO EDITADO
   
Josefh Hennyere
Pontos: 2843
SALVADOR
BA - BRASIL
ENUNCIADA !
Postada em 21/04/2005 18:18 hs         
Ficou assim:
 
Option Explicit
Dim tFlcnt As Long
Dim FSO As New FileSystemObject
Dim fd As Scripting.Folder
Sub CountFiles(dDrive As String)
    On Error Resume Next
    tFlcnt = tFlcnt + FSO.GetFolder(dDrive).Files.Count
    For Each fd In FSO.GetFolder(dDrive).SubFolders
        If Right(fd.Path, 1) = "" Then
            CountFiles fd.Path & fd.Name
        Else
            CountFiles fd.ParentFolder & "" & fd.Name
        End If
    Next
End Sub
Private Sub Form_Load()
    Call CountFiles("C:")
    MsgBox "O drive C: tem " & tFlcnt & " arquivos!"
End Sub
 
Valeu amigos!
   
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página