Як я можу перевірити розмір папки з командного рядка Windows?


36

Я хочу використовувати командний рядок Windows для обчислення розміру всіх файлів у папці та підпапках. Як правило, це робимо, клацнувши правою кнопкою миші на папці та натиснувши "Властивості", але я хочу мати змогу це зробити в командному рядку.

Яку команду можна використовувати?

Відповіді:


33

Ви хочете використовувати dir /a/sтак, щоб він включав кожен файл, включаючи системні та приховані файли. Це дасть вам загальний розмір, який ви бажаєте.


Покажіть мені, як результат вашої команди дає мені загальний розмір каталогу. Відредагуйте свою відповідь, щоб включити її. Я видалю свої коментарі та скасую свій голос, який відмовився.
dgo

2
@ user1167442 Ви, очевидно, не пробували. Вихід включає в себе точно той же розмір, який дає вам властивості Explorer.
DavidPostill

1
@DavidPostill - ти прав. Мені соромно соромно. Я переверну понижуючу силу. Однак, я все ще не надто захоплююсь цим рішенням - я вважаю за краще щось швидше, що не вимагає виведення всіх інших матеріалів, але це працює. Я помилився. - А-а, горіхи - це виграло; не дозвольте мені змінити свою нижчу оцінку. Як тільки я отримаю репутацію, я це відміню.
dgo

1
Це спрацювало - downvote видалено -)
dgo

1
@QHarr Так, продовжуйте запитання і я напишу відповідь для вас. Таким чином, він допоможе всім, шукаючи всіх, щоб знайти.
RockPaperLizard

13

Ви можете використовувати PowerShell!

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

Це повторюється через весь поточний каталог (ігноруючи каталоги, які неможливо ввести) і підсумовує розміри кожного файлу. Потім він друкує загальний розмір у байтах.

Ущільнений однопластовий:

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

На моїй машині це здається трохи швидшим, ніж a dir /s /a, оскільки він не друкує інформацію кожного об'єкта на екран.

Щоб запустити його з звичайного командного рядка:

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

Мені б хотілося, щоб я більше часу провів з повноваженнями. Мені просто ніколи не подобається використовувати його з якихось причин - хоча це дуже корисно для багатьох речей
dgo

Чудове рішення - дуже швидко теж!
TrojanName

7

Немає такої команди, вбудованої в командний рядок DOS або Windows. В Linux є команда du( D isk U sage).

У лінійці інструментів Microsoft Sysinternals є інструмент, що приблизно еквівалентний в duLinux. Це також називається du. ;)


1
du -sh <directory>це мій перехід на Linux (або windows w / du через git), щоб показати зрозумілий для людини підсумок розміру каталогу.
kavun

Спасибі, саме це мені було потрібно. Оскільки диски стають більшими, для отримання розмірів файлів правою кнопкою миші потрібні ще довші та довшіші результати, а результат не може бути обраний та скопійований у calc, щоб забезпечити розщеплення на декілька зовнішніх дисків, записавши кожен файл у папку джерела. Я поставив це в кінці пакету роботокопій, переданого в текстовий файл, тоді, коли пакет закінчується, я отримав загальний показник файлу / папки / розміру, який можна скопіювати / вставити в calc, щоб переконатися, що файли та байти є те саме, що і джерело.
Майкл Стімсон

2

Розмір папки можна обчислити за допомогою наступного пакетного сценарію:

@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

Як це запустити в Windows 7?
klm123

це не працюватиме, якщо загальний розмір перевищує 2 Гб через обмеження арифметики в cmd
phuclv

... що в ці дні є досить серйозним обмеженням!
rossmcm

2

Ви все ще можете скористатися утилітою командного рядка diruse.exeз ресурсного набору Windows 2000, доступного тут:

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

Він працює в Windows 8.1 без проблем.


Приємна знахідка, ви могли б додати в прикладі використання?
Бургі


1

Я усвідомлюю, що це запитання для аналізу розміру файлів з використанням CMD line. Але якщо ви відкриті для використання, PowerQuery (Excel add-in, versions 2010+)ви можете створити досить переконливий аналіз розміру файлів.

Сценарій нижче може бути вставлений у порожній запит; Єдине, що вам потрібно зробити, - це додати параметр під назвою "paramRootFolderSearch", а потім додати ваше значення, наприклад "C: \ Users \ bl0040 \ Dropbox \". Я використовував це як керівництво: MSSQLTips: Отримайте розміри файлів з файлової системи за допомогою Power Query .

Цей запит надав мені дані для створення зведеної таблиці ( [Folder Root]> [Folder Parent (1-2)], [Name]), і я зміг визначити кілька файлів, які я міг би видалити, які очистили багато місця в моєму каталозі.

Ось сценарій M для 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)"

Файл папки Size_xlsx.png

введіть тут опис зображення

Файл папки Size_xlsx2.png

введіть тут опис зображення


0

Просто відкрийте оболонку живлення і du -sh <directory>не потрібно встановлювати сторонні або системні системи. У програмі Power-shell можна запустити кілька простих Linux, таких як команди ls чи du, деякі комутатори не працюватимуть, як ls -altпомилка, оскільки powerhell не знає, що таке -alt ...


3
Яку версію PowerShell ви використовуєте? А ви впевнені, що у вас немає встановлених Sysinternals? Здається, що команда "du" не вбудована в жодних системах, до яких я маю доступ. Будь-яке посилання на документацію також буде корисним.
anlag

Я перебуваю на останньому швидкому інсайдерському каналі Windows 10, і там немає абсолютно ніякої duкоманди
phuclv

-2

Команда "dir" забезпечує розмір файлу, дату останньої модифікації та час поточного каталогу. Спочатку спробуйте перейти до каталогу, який ви хочете переглянути за розміром cdкоманди, а потім скористайтеся dirкомандою.

C:\>dir 

Перераховує розмір файлу, дату та час останньої модифікації всіх файлів та каталогів у каталозі, в якому ви зараз перебуваєте, в алфавітному порядку.


3
Це теж погана відповідь. Це виведе комбінований розмір усіх файлів у поточному каталозі. Однак він не видасть розмір жодного каталогу в поточному каталозі. Це просто не робить того, що запитують.
dgo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.