IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Liste des dossiers et taille des dossiers


Sujet :

VBScript

  1. #1
    Rédacteur
    Avatar de Benj.
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2009
    Messages
    839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 839
    Points : 1 849
    Points
    1 849
    Par défaut Liste des dossiers et taille des dossiers
    Bonjour,

    je cherche à créer un vbs pour liste tous les dossiers d'un répertoire et avoir ainsi la taille de ces dossiers.

    Par exemple, avoir la liste des dossiers de C:\Program Files ansi que leurs tailles.
    Ce qui me donnerait quelque chose comme :
    C:\Program Files : 976 Mb
    C:\Program Files\Adobe : 227 Mb
    C:\Program Files\Internet Explorer : 4.44Mb

    J'ai déjà avancé grâce au tutoriel de Warin et mon ami Google mais par contre (et c'est là que je me rends compte que je devrais vraiment me mettre à apprendre VB/VBS) c'est un soucis pour parcourir récursivement les dossiers et ajouter la taille des fichiers.

    Un coup de main serait le bienvenu.

    Je vous mets ce que j'ai déjà (n'hésitez pas à proposer vos améliorations :p) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    Call ListFolderContents("C:\Program Files")
    Set fso = Nothing
     
    Sub ListFolderContents(path)
    set folder = fso.GetFolder(path)
    wscript.echo folder.path
     
    For each item in folder.SubFolders
    ListFolderContents(item.Path)
    Next
    set folder = Nothing
    End Sub
    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040

  3. #3
    Rédacteur
    Avatar de Benj.
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2009
    Messages
    839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 839
    Points : 1 849
    Points
    1 849
    Par défaut
    Merci à toi ainsi qu'aux différents intervenants pour le lien que tu m'as donné.

    J'ai utilisé les fonctions qui ont été données pour faire quelque chose d'un peu plus poussé (export de la liste des dossiers de plus de 60 MB dans un csv).

    Si ça peut en aider certains :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Function ConvertSize(Size)
      Do While InStr(Size,",")
        CommaLocate = InStr(Size,",")
        Size = Mid(Size,1,CommaLocate - 1) & _
        Mid(Size,CommaLocate + 1,Len(Size) - CommaLocate)
      Loop
     
      Suffix = " Bytes"
      If Size >= 1024 Then suffix = " KB"
      If Size >= 1048576 Then suffix = " MB"
      If Size >= 1073741824 Then suffix = " GB"
      If Size >= 1099511627776 Then suffix = " TB"
     
      Select Case Suffix
        Case " KB" Size = Round(Size / 1024, 2)
        Case " MB" Size = Round(Size / 1048576, 2)
        Case " GB" Size = Round(Size / 1073741824, 2)
        Case " TB" Size = Round(Size / 1099511627776, 2)
      End Select
     
      ConvertSize = Size & Suffix
    End Function
     
    Function CreateAfile(resumeFile)
      Dim fso, MyFile 'fso pour File System Object
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set MyFile = fso.CreateTextFile(resumeFile, True)
    End Function
     
    Function WriteText(myFile,myText)
      Const ForReading = 1, ForWriting = 2, ForAppending = 8
      Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
      Dim fso, f, ts
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set f = fso.GetFile(MyFile)
      Set ts = f.OpenAsTextStream(ForAppending, TristateUseDefault)
      ts.WriteLine myText
      ts.Close
    End Function
     
    Dim fs
    Dim outputFile
    outputFile = "C:\dirSize" & Year(Now) & Month(Now) & Day(Now) & ".csv"
    checkDir = "C:\Utilisateurs"
    CreateAfile(outputFile)
    Set fs = CreateObject("Scripting.FileSystemObject")
    Call ListFolderContents(checkDir)
    Set fs = Nothing
     
    Sub ListFolderContents(path)
    set folder = fs.GetFolder(path)
     
    If fs.FolderExists(folder) Then 
      Set oFld = fs.GetFolder(folder)
      wscript.echo folder.path & " - " & ConvertSize(oFld.Size)
      If oFld.Size > 62914560 And folder.path <> checkDir Then 
        WriteText OutputFile, folder.path & ";" & Replace(folder.path, checkDir, "") &  ";" & ConvertSize(oFld.Size) & ";" & oFld.Subfolders.count & ";" & oFld.Files.Count
      End If
    End If
     
    For each item in folder.SubFolders
      ListFolderContents(item.Path)
    Next
    set folder = Nothing
    End Sub
    Remarques et commentaires sont les bienvenus pour les améliorations, comme je ne suis pas très familier avec VB.

    (je mettrai "Résolu" d'ici ce soir, si jamais certains veulent y ajouter des commentaires et pour ne pas que ça passe inaperçu )

Discussions similaires

  1. [GMF] Conversion des coordonnées et taille des Figures
    Par ego dans le forum Eclipse Modeling
    Réponses: 0
    Dernier message: 04/08/2014, 22h20
  2. [MySQL] Création de dossiers pour stocker des images et gestion des droits
    Par heretik25 dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 14/12/2011, 10h24
  3. taille des fenetres et taille d'écran
    Par rec82 dans le forum Langage
    Réponses: 3
    Dernier message: 29/01/2009, 22h13
  4. Réponses: 2
    Dernier message: 08/08/2008, 22h27
  5. taille des fichiers et taille des segments
    Par pline dans le forum Sybase
    Réponses: 1
    Dernier message: 12/06/2006, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo