How can I list directories and their sizes in command prompt?

Solution 1:

Try the Disk Usage utility from Sysinternals. Specifically, du -l 1 should show the size of each subdirectory of the current directory. For more information, run du without any parameters.


If PowerShell is OK, then try the following:

Get-ChildItem |
Where-Object { $_.PSIsContainer } |
ForEach-Object {
  $_.Name + ": " + (
    Get-ChildItem $_ -Recurse |
    Measure-Object Length -Sum -ErrorAction SilentlyContinue
  ).Sum
}

The sizes are in bytes. To format them in some larger unit like MB, try the following (condensed to one line):

Get-ChildItem | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.Name + ": " + "{0:N2}" -f ((Get-ChildItem $_ -Recurse | Measure-Object Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB) + " MB" }

For more information, see this article at Technet.

If you want more flexible formatting of the sizes (choosing kB/MB/GB/etc based on the actual size), see this question and its answers.


I don't think it's possible to do what you want from the regular command line and with only a few simple commands. See this script as an example (not going to copy it here because I don't believe that approach is worth pursuing, unless PowerShell isn't available and third-party utilities aren't acceptable).