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ć?

użytkownik1605665
źródło

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.

RockPaperLizard
źródło
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"
Ben N.
źródło
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. ;)

Daniel B.
źródło
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
nr 73
źródło
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
2

Nadal możesz używać narzędzia wiersza polecenia diruse.exe z zestawu Windows 2000 Resource Kit dostępnego tutaj:

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

Działa w systemie Windows 8.1 bez żadnych problemów.

Kamienna głowa
źródło
Fajne znalezisko, czy możesz dodać przykład użycia?
Burgi
1

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

Keltari
źródło
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

Arkusze Sherlocka
źródło
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 ...

tmac
źródło
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.

vembutech
źródło
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