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.