Wie kann ich die Größe eines Ordners über die Windows-Befehlszeile überprüfen?

33

Ich möchte die Windows-Befehlszeile verwenden, um die Größe aller Dateien in einem Ordner und einem Unterordner zu berechnen. Normalerweise mache ich das, indem ich mit der rechten Maustaste auf den Ordner klicke und auf "Eigenschaften" klicke, aber ich möchte es in der Befehlszeile tun können.

Welchen Befehl kann ich verwenden?

user1605665
quelle

Antworten:

33

Sie sollten es so verwenden dir /a/s, dass es alle Dateien enthält, einschließlich Systemdateien und versteckter Dateien. Dadurch erhalten Sie die gewünschte Gesamtgröße.

RockPaperLizard
quelle
Zeigen Sie mir, wie die Ausgabe Ihres Befehls die Gesamtgröße des Verzeichnisses angibt. Bearbeiten Sie Ihre Antwort, um sie einzuschließen. Ich werde meine Kommentare löschen und meine Abwahl rückgängig machen.
1.
2
@ user1167442 Du hast es offensichtlich nicht ausprobiert. Die Ausgabe enthält genau dieselbe Größe wie die Explorer-Eigenschaften.
DavidPostill
1
@ DavidPostill - Sie sind richtig. Ich schäme mich hängend. Ich werde die Gegenstimme umkehren. Trotzdem bin ich immer noch nicht besonders an dieser Lösung interessiert - ich würde etwas Schnelleres vorziehen, bei dem nicht alle anderen Dinge ausgegeben werden müssen, aber es funktioniert. Ich habe geirrt. - Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh! Sobald ich den Ruf dazu bekomme, werde ich es wieder rückgängig machen.
8.
1
Es hat funktioniert - Downvote entfernt -)
dgo
1
@ QHarr Ja, stellen Sie eine Frage und ich schreibe eine Antwort für Sie. Auf diese Weise wird es jedem helfen, indem es für alle auffindbar ist.
RockPaperLizard
11

Sie können PowerShell verwenden!

$totalsize = [long]0
Get-ChildItem -File -Recurse -Force -ErrorAction SilentlyContinue | % {$totalsize += $_.Length}
$totalsize

Dies durchläuft das gesamte aktuelle Verzeichnis (wobei Verzeichnisse, die nicht eingegeben werden können, ignoriert werden) und summiert die Größe jeder Datei. Dann wird die Gesamtgröße in Bytes ausgegeben.

Kompakter Einzeiler:

$totalsize=[long]0;gci -File -r -fo -ea Silent|%{$totalsize+=$_.Length};$totalsize

Auf meinem Computer scheint dies etwas schneller zu sein als ein dir /s /a, da nicht alle Objektinformationen auf dem Bildschirm gedruckt werden.

So führen Sie es an einer normalen Eingabeaufforderung aus:

powershell -command "$totalsize=[long]0;gci -File -r -fo -ea Silent|%{$totalsize+=$_.Length};$totalsize"
Ben N
quelle
Ich wünschte, ich hätte mehr Zeit mit Powershell verbracht. Ich mag es einfach aus irgendeinem Grund nie - obwohl es für viele
Dinge
Tolle Lösung - auch ganz schnell!
TrojanName
6

In DOS oder der Windows-Befehlszeile ist kein solcher Befehl integriert. Unter Linux gibt es den Befehl du( D isk U sage).

Die Sysinternals-Tools von Microsoft verfügen über ein Tool, das in etwa dem duvon Linux entspricht. Es heißt auch du. ;)

Daniel B
quelle
1
du -sh <directory>Unter Linux (oder Windows w / du via Git) kann ich eine lesbare Zusammenfassung der Verzeichnisgröße anzeigen.
Kavun
2

Die Ordnergröße kann mit folgendem Batch-Skript berechnet werden:

@echo off
setlocal enabledelayedexpansion

set size=0
for /f "tokens=*" %%x in ('dir /s /a /b %1') do set /a size+=%%~zx
echo.!size!

endlocal
Nr. 73
quelle
Wie läuft das unter Windows 7?
klm123
Dies funktioniert nicht, wenn die Gesamtgröße mehr als 2 GB beträgt, da die arithmetische Grenze in cmd
phuclv
... was heutzutage eine ziemlich ernsthafte Einschränkung ist!
Rossmcm
2

Sie können weiterhin das Befehlszeilenprogramm diruse.exeaus dem Windows 2000 Resource Kit verwenden, das hier verfügbar ist:

https://support.microsoft.com/en-us/kb/927229

Es funktioniert problemlos unter Windows 8.1.

RockHead
quelle
Netter Fund, könnten Sie eventuell ein Anwendungsbeispiel hinzufügen?
Burgi
1

dir /s Listet die Größe aller Dateien und der Dateien in allen Unterordnern auf

Keltari
quelle
1

Mir ist klar, dass diese Frage für die Dateigrößenanalyse mit gestellt wurde CMD line. Wenn Sie jedoch offen für die Verwendung sind PowerQuery (Excel add-in, versions 2010+), können Sie eine überzeugende Analyse der Dateigröße erstellen.

Das folgende Skript kann in eine leere Abfrage eingefügt werden. Sie müssen lediglich einen Parameter mit dem Namen "paramRootFolderSearch" hinzufügen und dann Ihren Wert hinzufügen, z. B. "C: \ Users \ bl0040 \ Dropbox \". Ich habe dies als Leitfaden verwendet: MSSQLTips : Rufen Sie die Dateigrößen mit Power Query aus dem Dateisystem ab .

Diese Abfrage lieferte die Daten für die Erstellung einer Pivot-Tabelle ( [Folder Root]> [Folder Parent (1-2)], [Name]), und ich konnte einige Dateien identifizieren, die ich löschen konnte, wodurch viel Speicherplatz in meinem Verzeichnis frei wurde.

Hier ist das M-Skript für PowerQuery :

let
// Parmameters:
    valueRootFolderSearch = paramRootFolderSearch,
    lenRootFolderSearch = Text.Length(paramRootFolderSearch),
//

    Source = Folder.Files(paramRootFolderSearch),
    #"Removed Other Columns" = Table.RenameColumns(
Table.SelectColumns(Source,{"Name", "Folder Path", "Attributes"})
,{{"Folder Path", "Folder Path Full"}}),
    #"Expanded Attributes" = Table.ExpandRecordColumn(#"Removed Other Columns", "Attributes", {"Content Type", "Kind", "Size"}, {"Content Type", "Kind", "Size"}),
    #"fx_Size(KB)" = Table.AddColumn(#"Expanded Attributes", "Size(KB)", each [Size]/1024),
    #"fx_Size(MB)" = Table.AddColumn(#"fx_Size(KB)", "Size(MB)", each [Size]/1048576),
    #"fx_Size(GB)" = Table.AddColumn(#"fx_Size(MB)", "Size(GB)", each [Size]/1073741824),
    fx_FolderRoot = Table.AddColumn(#"fx_Size(GB)", "Folder Root", each valueRootFolderSearch),
    helper_LenFolderPathFull = Table.AddColumn(fx_FolderRoot, "LenFolderPathFull", each Text.Length([Folder Path Full])),
    fx_FolderDepth = Table.AddColumn(helper_LenFolderPathFull, "Folder Depth", each Text.End([Folder Path Full], [LenFolderPathFull]-lenRootFolderSearch+1)),
    #"helperList_ListFoldersDepth-Top2" = Table.AddColumn(fx_FolderDepth, "tmp_ListFoldersDepth", each List.Skip(
  List.FirstN(
    List.RemoveNulls(
      Text.Split([Folder Depth],"\")
    )
  ,3)
,1)),
    #"ListFoldersDepth-Top2" = Table.TransformColumns(#"helperList_ListFoldersDepth-Top2", 
{"tmp_ListFoldersDepth", each "\" & Text.Combine(List.Transform(_, Text.From), "\") & "\"
, type text}),
    #"Select Needed Columns" = Table.SelectColumns(#"ListFoldersDepth-Top2",{"Name", "Folder Root", "Folder Depth", "tmp_ListFoldersDepth", "Content Type", "Kind", "Size", "Size(KB)", "Size(MB)", "Size(GB)"}),
    #"rename_FoldersParent(1-2)" = Table.RenameColumns(#"Select Needed Columns",{{"tmp_ListFoldersDepth", "Folders Parent (1-2)"}})
in
    #"rename_FoldersParent(1-2)"

Ordnerdatei Sizes_xlsx.png

Bildbeschreibung hier eingeben

Ordnerdatei Sizes_xlsx2.png

Bildbeschreibung hier eingeben

Sherlock-Tabellen
quelle
0

Öffnen Sie einfach die Power Shell und du -sh <directory>installieren Sie keine Drittanbieter- oder Sys-Interna. In der Power-Shell können Sie einige einfache Linux-ähnliche Befehle wie ls oder du ausführen. Einige der Schalter funktionieren nicht wie ls -altein Fehler, da Powershell nicht weiß, was das -alt ist.

tmac
quelle
3
Welche Version von PowerShell verwenden Sie? Und sind Sie sicher, dass Sie Sysinternals nicht installiert haben? Der Befehl "du" scheint in keinem System integriert zu sein, auf das ich Zugriff habe. Ein Dokumentationslink wäre ebenfalls hilfreich.
anlag
Ich bin auf dem neuesten schnellen Insiderkanal von Windows 10 und es ist absolut kein duBefehl verfügbar
phuclv
-2

Der Befehl "dir" gibt die Dateigröße, das Datum und die Uhrzeit der letzten Änderung des aktuellen Verzeichnisses an. Versuchen Sie zunächst, in das Verzeichnis zu wechseln, in dem Sie die Größe des cdBefehls anzeigen möchten , und verwenden Sie dann den dirBefehl.

C:\>dir 

Listet die Dateigröße, das Datum und die Uhrzeit der letzten Änderung aller Dateien und Verzeichnisse in dem Verzeichnis, in dem Sie sich gerade befinden, in alphabetischer Reihenfolge auf.

Vembutech
quelle
2
Dies ist auch eine schlechte Antwort. Dadurch wird die Gesamtgröße aller Dateien im aktuellen Verzeichnis ausgegeben. Es wird jedoch nicht die Größe von Verzeichnissen im aktuellen Verzeichnis ausgegeben. Das macht einfach nicht, was der Op verlangt.
dgo