[VBS] recuperer taille fichier

JohnDoe -  
 Utilisateur anonyme -
Bonjour,

je cherche à créer un script pour recuperer la taille des fichiers ds un repertoire...J'ai essayé le code suivant (fonctionne pas...)...
' Création de l'objet FileSystemObject :
Set objFSO = CreateObject("Scripting.FileSystemObject")

' Connexion au répertoire :
Set MonRepertoire = objFSO.GetFolder("D:\OLAP")

' Création de la collection :
Set collecRep = MonRepertoire.Subfolders
Set CollecFichier = MonRepertoire.Files

Set fichier_sortie = objFSO.CreateTextFile("D:\test.csv", 2)


' Récupération des noms de fichier du répertoire :
For Each Rep in 
	For Each Rep in CollecReps
		fichier_sortie.write(Rep.Path & ";" & Rep.filesize & vbcrlf)
	Next
	For Each File in CollecFichier
		fichier_sortie.write(File.Path & ";" & File.filesize & vbcrlf)
	Next

si qq1 voit le pb, ça m'aiderait bcp...

Merci

1 réponse

  1. Utilisateur anonyme
     
    Bonjour,

    Pour ce genre de traitement, je vous recommande la récursivité !

    Dim Rep, oDossier, oFichier
    
    ' Création de l'objet FileSystemObject :
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    ' Connexion au répertoire :
    Set MonRepertoire = objFSO.GetFolder("D:\OLAP")
    
    ' Création de la collection :
    Set collecRep = MonRepertoire.Subfolders
    Set CollecFichier = MonRepertoire.Files
    
    Set fichier_sortie = objFSO.CreateTextFile("D:\test.csv", 2)
    
        On Error Resume Next
    
        If (MonRepertoire.RootFolder.Files.Count > 0) Then
            For Each oFichier In CollecFichier 
                 fichier_sortie.writeline(File.Path & ";" & File.filesize)
            Next
        End If
    
        If (collecRep.SubFolders.Count > 0) Then
            For Each oDossier In collecRep
                Call ListeFichier(oDossier)
            Next
        End If
    
    Wscript.Echo "Fin de traitement"
    
    Wscript.Quit
    '
    
    '
    Sub ListeFichier(ByVal oRepertoire)    ' Routine récursive
    
        Dim oDossier
    
        On Error Resume Next
    
        If (oRepertoire.Files.Count > 0) Then
            For Each oFichier In oRepertoire.Files
               fichier_sortie.writeline(File.Path & ";" & File.filesize)
            Next
        End If
    
        If (oRepertoire.SubFolders.Count > 0) Then
            For Each oDossier In oRepertoire.SubFolders
                Call ListeFichier(oDossier)
            Next
        End If
            
    End Sub
    '
    

    Lupin
    2