Jak mogę sprawdzić rozmiar folderu z wiersza poleceń systemu Windows?


36

Chcę użyć wiersza polecenia systemu Windows do obliczenia wielkości wszystkich plików w folderze i podfolderze. Zwykle zrobiłbym to, klikając folder prawym przyciskiem myszy i klikając „Właściwości”, ale chcę to zrobić w wierszu polecenia.

Jakiego polecenia mogę użyć?

Odpowiedzi:


33

Będziesz chciał użyć, dir /a/saby zawierał każdy plik, w tym pliki systemowe i ukryte. To da ci całkowity rozmiar, jaki chcesz.


Pokaż, w jaki sposób wynik twojego polecenia daje mi całkowity rozmiar katalogu. Edytuj swoją odpowiedź, aby ją uwzględnić. Usunę moje komentarze i cofnę głos w dół.
— dgo

2
@ user1167442 Najwyraźniej tego nie próbowałeś. Dane wyjściowe zawierają dokładnie taki sam rozmiar, jaki dają właściwości eksploratora.
— DavidPostill

1
@DavidPostill - masz rację. Jestem zawstydzony zawstydzony. Odwrócę głosowanie. To powiedziawszy, nadal nie przepadam za tym rozwiązaniem - wolałbym coś nieco szybszego, co nie wymagałoby wypisywania wszystkich innych rzeczy, ale działa. Popełniłem błąd. - Achh orzechy - wygrało; pozwól mi odwrócić moje zdanie. Jak tylko zdobędę reputację, odwrócę to.
— dgo

1
Udało się - usunięto głosowanie -)
— dgo

1
@QHarr Tak, śmiało, zadaj pytanie, a ja napiszę odpowiedź. W ten sposób pomoże wszystkim, umożliwiając wyszukiwanie wszystkim.
— RockPaperLizard

13

Możesz użyć PowerShell!

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

Powtarza się to w całym bieżącym katalogu (ignorując katalogi, których nie można wprowadzić) i podsumowuje rozmiary każdego pliku. Następnie drukuje całkowity rozmiar w bajtach.

Kompaktowy jednowarstwowy:

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

Na mojej maszynie wydaje się to nieco szybsze niż dir /s /a , ponieważ nie drukuje informacji o każdym obiekcie na ekranie.

Aby uruchomić go z normalnego wiersza polecenia:

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

Chciałbym spędzać więcej czasu z PowerShell. Po prostu nigdy nie lubię go używać z jakiegoś powodu - mimo że jest to bardzo przydatne w wielu sprawach
— dgo

Świetne rozwiązanie - naprawdę szybkie!
— TrojanName

7

Nie ma takiego polecenia wbudowanego w DOS lub Windows Command Line. W systemie Linux istnieje du( D isk U sage).

Linia narzędzi Microsoft Sysinternals ma narzędzie, które jest w przybliżeniu równoważne z duLinuksem. Jest również nazywany du. ;)


1
du -sh <directory>jest moje przejście do systemu Linux (lub Windows w / du przez git), aby wyświetlić czytelne dla człowieka podsumowanie rozmiaru katalogu.
— kavun

Dzięki, właśnie tego potrzebowałem. Gdy dyski stają się większe, coraz dłużej trwa kliknięcie właściwości prawym przyciskiem myszy, aby uzyskać rozmiary plików, a wyniku nie można wybrać i skopiować do kalkulatora, aby upewnić się, że podział na wiele zewnętrznych dysków zapisał każdy plik w folderze źródłowym. Umieściłem to na końcu partii robocopy przesyłanej strumieniowo do pliku tekstowego, a następnie, gdy partia się kończy, mam metrykę całkowitego pliku / folderu / rozmiaru, którą można skopiować / wkleić do kalkulatora, aby mieć pewność, że pliki i bajty są to samo co źródło.
— Michael Stimson

2

Rozmiar folderu można obliczyć za pomocą następującego skryptu wsadowego:

@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

Jak uruchomić to w systemie Windows 7?
— klm123,

to nie zadziała, jeśli całkowity rozmiar przekroczy 2 GB ze względu na limit arytmetyki w cmd
— phuclv

... co w dzisiejszych czasach jest dość poważnym ograniczeniem!
— rossmcm


1

dir /s Wymienia rozmiary wszystkich plików i plików we wszystkich podfolderach


1

Zdaję sobie sprawę z tego pytania zadanego przy użyciu analizy wielkości pliku CMD line. Ale jeśli jesteś otwarty na używanie PowerQuery (Excel add-in, versions 2010+), możesz stworzyć całkiem atrakcyjną analizę rozmiaru pliku.

Poniższy skrypt można wkleić w puste zapytanie; Jedyne, co musisz zrobić, to dodać parametr o nazwie „paramRootFolderSearch”, a następnie dodać swoją wartość, na przykład „C: \ Users \ bl0040 \ Dropbox \”. Użyłem tego jako przewodnika: MSSQL Porady: Pobierz rozmiary plików z systemu plików za pomocą Power Query .

To zapytanie dostarczyło mi danych do utworzenia tabeli przestawnej ( [Folder Root]> [Folder Parent (1-2)], [Name]) i udało mi się zidentyfikować kilka plików, które mogłem usunąć, co zwolniło dużo miejsca w moim katalogu.

Oto skrypt M dla 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)"

Folder Plik Rozmiary_xlsx.png

wprowadź opis zdjęcia tutaj

Folder Plik Rozmiary_xlsx2.png

wprowadź opis zdjęcia tutaj


0

Wystarczy otworzyć powłokę zasilania i du -sh <directory>nie trzeba instalować zewnętrznych ani sys-wewnętrznych. W Power-shell możesz uruchamiać proste Linux-owe polecenia, takie jak polecenia ls lub du, niektóre przełączniki nie będą działać tak jak ls -altbłąd, ponieważ PowerShell nie wie, co to -alt ...


3
Jakiej wersji programu PowerShell używasz? Czy jesteś pewien, że nie masz zainstalowanych Sysinternals? Wydaje się, że polecenie „du” nie jest wbudowane w żadnym systemie, do którego mam dostęp. Przydałby się też link do dokumentacji.
— anlag

Jestem na najnowszym szybkim kanale poufnych informacji o systemie Windows 10 i absolutnie nie ma dudostępnego polecenia
— phuclv

-2

Komenda „dir” podaje rozmiar pliku, datę ostatniej modyfikacji i godzinę bieżącego katalogu. Najpierw spróbuj przejść do katalogu, w którym chcesz sprawdzić rozmiar cdpolecenia, a następnie użyj dirpolecenia.

C:\>dir 

Wyświetla rozmiar pliku, datę i godzinę ostatniej modyfikacji wszystkich plików i katalogów w katalogu, w którym aktualnie się znajdujesz, w kolejności alfabetycznej.


3
To także zła odpowiedź. Spowoduje to wyświetlenie łącznego rozmiaru wszystkich plików w bieżącym katalogu. Nie wyświetli jednak rozmiaru żadnych katalogów w bieżącym katalogu. To po prostu nie robi tego, o co prosi operacja.
— dgo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.