Calculer et afficher la taille d’un dossier en ligne de commande sous Windows

Windows command line terminal displaying directory sizes and storage statistics

Tout administrateur système confronté à un disque saturé cherche le moyen le plus rapide d’identifier les répertoires volumineux. Si le réflexe naturel dans le monde Unix consiste à taper du -sh (comme lorsqu’il s’agit d’afficher la taille de partition linux / Solaris), la tâche sous l’invite de commande Windows historique (cmd.exe) a longtemps été plus complexe. L’utilitaire dir liste les fichiers mais ne cumule pas automatiquement la volumétrie globale des sous-dossiers.

Aujourd’hui, l’ancien outil diruse issu du Resource Kit Windows 2000/2003 est devenu obsolète. Voici trois méthodes actuelles, fiables et pragmatiques pour évaluer l’espace occupé par un répertoire depuis un terminal Windows.

Méthode 1 : Le one-liner PowerShell (précis et moderne)

PowerShell est désormais présent sur tous les serveurs et postes clients récents. Pour calculer la taille totale d’un dossier et de son arborescence, la combinaison de Get-ChildItem et de Measure-Object est la solution standard :

(Get-ChildItem -Path « C:\MonDossier » -Recurse -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1GB

Cette commande filtre uniquement les fichiers, ignore les éventuels refus d’accès pour ne pas bloquer l’exécution, additionne les octets et divise le résultat par 1024^3 pour afficher le volume directement en gigaoctets (Go). Pour un affichage plus lisible avec seulement deux décimales :

« {0:N2} Go » -f ((Get-ChildItem -Path « C:\MonDossier » -Recurse -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1GB)

Méthode 2 : L’astuce ultra rapide avec Robocopy

Sur des volumes de fichiers très denses (plusieurs centaines de milliers d’éléments), PowerShell peut consommer beaucoup de mémoire vive et prendre du temps à instancier les objets. L’utilitaire natif Robocopy offre une alternative redoutable grâce à son commutateur de simulation /L :

robocopy « C:\MonDossier » « C:\MonDossier » /L /E /BYTES /NFL /NDL /NJH /R:0 /W:0

Détail des paramètres utilisés :

  • /L : Mode simulation uniquement (aucun fichier n’est copié ni déplacé).
  • /E : Analyse récursive en incluant les sous-dossiers, même vides.
  • /BYTES : Affiche la taille exacte en octets bruts pour éviter les arrondis.
  • /NFL /NDL : Masque la liste des fichiers et répertoires afin de ne pas ralentir le terminal.
  • /NJH : Supprime l’en-tête de la commande.
  • /R:0 /W:0 : Zéro tentative en cas de fichier verrouillé pour ne pas attendre inutilement.

En fin d’exécution, Robocopy affiche un tableau récapitulatif clair indiquant le nombre total de dossiers, de fichiers et le volume global d’octets. C’est l’un de ces utilitaires incontournables qui complètent les lignes de commandes indémodables Windows, particulièrement efficace quand on doit acceder à Windows en ligne de commande à distance via WinRM ou SSH.

Méthode 3 : Sysinternals Disk Usage (du.exe)

Pour retrouver une syntaxe proche de l’environnement Unix tout en conservant une excellente rapidité d’exécution, la suite Sysinternals de Microsoft met à disposition l’exécutable portable du.exe. Une fois copié dans votre System32 ou votre variable de chemin PATH, la commande s’utilise simplement :

du -v -l 1 « C:\MonDossier »

L’option -v détaille l’occupation des sous-dossiers immédiats (niveau 1 avec -l 1) et permet d’isoler en un clin d’œil la branche qui consomme le plus d’espace sur un partage de fichiers ou un disque applicatif.

À lire aussi