Wie kann ich Verzeichnisse und ihre Größen in der Eingabeaufforderung auflisten?

Wie kann ich Verzeichnisse und ihre Größen in der Eingabeaufforderung auflisten?

Ich möchte die Größe der Unterordner in einem Ordner sehen, ähnlich wie bei einem Linux- du -shBefehl. Wie kann ich Verzeichnisse und ihre Größe in der Eingabeaufforderung auflisten?

Antwort1

Probieren Sie dieFestplattennutzungDienstprogramm von Sysinternals. Insbesondere du -l 1sollte es die Größe jedes Unterverzeichnisses des aktuellen Verzeichnisses anzeigen. Für weitere Informationen führen Sie es duohne Parameter aus.


Wenn PowerShell in Ordnung ist, versuchen Sie Folgendes:

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

Die Größen sind in Bytes angegeben. Um sie in einer größeren Einheit wie MB zu formatieren, versuchen Sie Folgendes (komprimiert auf eine Zeile):

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

Weitere Informationen finden Sie unterdieser Artikel bei Technet.

Wenn Sie eine flexiblere Formatierung der Größen wünschen (Auswahl von kB/MB/GB/usw. basierend auf der tatsächlichen Größe), siehediese Frage und ihre Antworten.


Ich glaube nicht, dass es möglich ist, das Gewünschte über die normale Befehlszeile und mit nur wenigen einfachen Befehlen zu erreichen. Siehedieses Skript als Beispiel(ich werde es hier nicht kopieren, da ich nicht glaube, dass dieser Ansatz es wert ist, weiterverfolgt zu werden, es sei denn, PowerShell ist nicht verfügbar und Dienstprogramme von Drittanbietern sind nicht akzeptabel.)

Antwort2

Ich habe keine Erfahrung mit duLinux. Aber unter Windows dir /sliste ich alle Ordner und Unterordner zusammen mit der Dateigröße auf.

Antwort3

Dies ist eine Modifikation zuIndreks Antwort. Ich habe Folgendes hinzugefügt:

  • rekursives Weitergehen in Unterverzeichnisse ermöglicht
  • eine Größenschwelle hinzugefügt, um kleinere Verzeichnisse auszuschließen
  • Verzeichnisnamen durch ihren relativen Pfad vom aktuellen Verzeichnis ersetzt
  • sortierte Ergebnisse nach Pfad (ich fand das bequemer, als sie nach Größe zu sortieren, wenn sie bereits nach Größe gefiltert sind)
  • einige Formatierungen hinzugefügt, um die Ergebnisse lesbarer zu machen

$minsizeMBLegen Sie also $maxdepthdie gewünschten Werte fest und führen Sie das Skript aus.

$minsizeMB = 100; 
$maxdepth = 5; 
Get-ChildItem -depth $maxdepth -Recurse |
    Where-Object { $_.PSIsContainer } |
    Select-Object FullName | 
    Sort-Object FullName |
    ForEach-Object { 
        $directory = Get-Item $_.FullName;
        $path = Resolve-Path -Relative $directory.FullName ; 
        $size = ((Get-ChildItem $directory -Recurse | Measure-Object Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB) ; 
        if ($size -ge $minsizeMB) { "{0,-90}: {1:N2} MB" -f ($path, $size) } 
    }

verwandte Informationen