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

Scripts/Batch Discussion :

Lister gros répertoires


Sujet :

Scripts/Batch

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut Lister gros répertoires
    Bonjour,

    j'ai besoin de monitorer l'occupation disque d'une arborescence de répertoires. J'ai trouvé ce script ici :
    https://technet.microsoft.com/en-us/.../ff730945.aspx


    que j'ai un peu modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $startFolder = "E:\Data"
    
    $colItems = (Get-ChildItem $startFolder | Measure-Object -property length -sum)
    "$startFolder -- " + "{0:N2}" -f ($colItems.sum / 1GB) + " GB"
    
    $colItems = (Get-ChildItem $startFolder -recurse | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)
    foreach ($i in $colItems)
        {
            $subFolderItems = (Get-ChildItem $i.FullName | Where-Object { -not $_.PSIsContainer } | Measure-Object -property length -sum) 
    		$i.FullName + " -- " + "{0:N2}" -f ($subFolderItems.sum / 1GB) + " GB"
        }
    Qui me produit cette sortie :
    E:\Data\00002\00001 -- 0,00 GB
    E:\Data\00001\00001\Record\00001 -- 104,81 GB
    E:\Data\00001\00001 -- 0,00 GB
    E:\Data\00001 -- 0,00 GB
    E:\Data\00001\00004\Record\00002 -- 104,64 GB
    E:\Data\00002 -- 0,00 GB
    E:\Data\00001\00002 -- 0,00 GB
    E:\Data\00001\00003 -- 0,00 GB
    E:\Data\00001\00005\Record\00003 -- 104,64 GB
    E:\Data\00001\00006\Record\00004 -- 97,97 GB
    E:\Data\00001\00004 -- 0,00 GB
    E:\Data\00001\00005 -- 0,00 GB
    E:\Data\00001\00007\Record\00005 -- 207,62 GB
    E:\Data\00001\00006 -- 0,00 GB
    E:\Data\00001\00002\Record\00006 -- 223,34 GB
    E:\Data\00001\00003\Record\00007 -- 635,19 GB
    Si je souhaite trier par Arborescence, comment dois-je procéder ? De plus, si je veux que le répertoire parent intègre la valeur des répertoires enfants, est-ce possible ?

    Pour avoir au final un rendu du genre
    E:\Data\00001 -- 989,70 GB
    E:\Data\00001\00001 -- 104,81 GB
    E:\Data\00001\00001\Record\00001 -- 104,81 GB
    E:\Data\00001\00002 -- 223,34 GB
    E:\Data\00001\00002\Record\00006 -- 223,34 GB
    E:\Data\00001\00003 -- 635,19 GB
    E:\Data\00001\00003\Record\00007 -- 635,19 GB
    Merci pour votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Un truc comme ça

    Code powershell : 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
    function Size([string]$folder, $first = $true)
    {
        if ($first)
        {
            $result = @()
        }
     
        $obj = [PSCustomObject]@{
            FullName = $folder
            FullSize = [long]0
        }
     
        foreach($subdir in Get-ChildItem -Path $folder | Where-Object {$_.PSIsContainer})
        {
            $res = Size $subdir.FullName $false
            $obj.FullSize += $res[0]
            $result = $res[1]
        }
     
        $obj.FullSize += [long](Get-ChildItem -Path $folder | Where-Object {!$_.PSIsContainer} | Measure-Object -Sum Length).Sum
        $result += $obj
     
        if ($first)
        {
            return $result
        }
        else
        {
            return $obj.FullSize, $result
        }
    }
     
    Size "E:\Data" | Sort-Object FullName | ForEach-Object {Write-Host "$($_.FullName) -- $($_.FullSize)"}

Discussions similaires

  1. Lister un répertoire Web distant
    Par antony dans le forum Langage
    Réponses: 4
    Dernier message: 07/03/2006, 13h02
  2. Lister les répertoires d'un répertoire
    Par Faith's Fall dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/02/2006, 12h01
  3. lister un répertoire...
    Par airod dans le forum Général Python
    Réponses: 2
    Dernier message: 09/01/2006, 11h29
  4. Lister un répertoire
    Par ArkAng3 dans le forum MFC
    Réponses: 7
    Dernier message: 29/09/2005, 14h13
  5. Comment copier et lister un répertoire ?
    Par pepito62 dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/05/2005, 20h14

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