Bir klasörün boyutunu Windows komut satırından nasıl kontrol edebilirim?


36

Bir klasördeki ve alt klasördeki tüm dosyaların boyutunu hesaplamak için Windows komut satırını kullanmak istiyorum. Normalde bunu klasöre sağ tıklayıp "Özellikler" i tıklatarak yapardım ancak komut satırında yapabilmek istiyorum.

Hangi komutu kullanabilirim?

Yanıtlar:


33

dir /a/sSistem ve gizli dosyalar dahil her dosyayı içerecek şekilde kullanmak isteyeceksiniz . Bu size istediğiniz toplam büyüklüğü verecektir.


Bana komutunuzun çıktısının, dizinin toplam boyutunu nasıl verdiğini gösterin. Cevabınızı eklemek için düzenleyin. Yorumlarımı silip aşağı oyumu tersine çeviririm.
dgo

2
@ user1167442 Açıkça denemediniz. Çıktı kaşif özelliklerinin size sağladığı aynı büyüklüğü içerir.
DavidPostill

1
@DavidPostill - haklısın. Sıkışıp utanıyorum. Aşağı oyu tersine çeviririm. Bununla birlikte, hala bu çözüme çok meraklı değilim - diğerlerini çıkarmayı gerektirmeyen biraz daha hızlı bir şeyi tercih ederim, ama işe yarıyor. Ben erttim. - Ahh nut - Bu benim aşağı oyumu tersine çevirmeme izin vermiyor. Şöhreti kazanır almaz, bunu tersine çeviririm.
dgo

1
Bu işe yaradı - oy verildi kaldırıldı -)
dgo

1
@QHarr Evet, devam edin ve bir soru gönderin, size bir cevap yazacağım. Bu şekilde, herkesin bulması için aranabilir olmasıyla herkese yardımcı olacaktır.
RockPaperLizard

13

PowerShell'i kullanabilirsiniz!

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

Bu, geçerli dizinin tamamı boyunca girilemez (girilemeyen dizinleri yok sayarak) ve her dosyanın boyutlarını toplar. Sonra toplam boyutu bayt olarak yazdırır.

Sıkıştırılmış tek astar:

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

Makinemde bu dir /s /a, her nesnenin bilgilerini ekrana yazdırmadığı için , bu durumdan biraz daha hızlı görünüyor .

Normal bir komut isteminden çalıştırmak için:

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

Keşke powershell ile daha fazla zaman geçirebilseydim. Sadece bir nedenden ötürü kullanmaktan hiç hoşlanmam - birçok şey için süper yararlı olsa da
dgo

Mükemmel çözüm - gerçekten de hızlı!
TrojanName

7

DOS ya da Windows Komut Satırı içine yerleştirilmiş böyle bir komut yoktur. Linux'ta, du( D isk U adaçayı) komutu var.

Microsoft'un Sysinternals araç satırı du, Linux'ta kabaca eşdeğer bir araca sahiptir . Aynı zamanda denir du. ;)


1
du -sh <directory>Dizin boyutunun insan tarafından okunabilir bir özetini göstermek için Linux'a gitmem (ya da git üzerinden w / du pencereleri) gitmem.
kavun

Sağol, tam ihtiyacım olan şey buydu. Diskler büyüdükçe, dosya boyutlarını elde etmek için sağ tıklama özelliklerinin kullanımı daha uzun sürer ve sonuç birden fazla harici disk üzerine bölünmenin kaynak klasördeki her dosyayı yazmasını sağlamak için seçilemez ve hesaplanamaz . Bir metin dosyasına yönlendirilen bir robokopi grubunun sonunda, ardından parti sona erdiğinde, dosyaların ve baytların hesaplandığından emin olmak için calc'e kopyalanabilecek / yapıştırılabilecek toplam bir dosya / klasör / boyut metriği aldım. kaynakla aynı.
Michael Stimson

2

Klasör boyutu aşağıdaki toplu komut dosyası ile hesaplanabilir:

@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

Bu nasıl Windows 7'de çalıştırılır?
klm123

toplam boyutu nedeniyle cmd aritmetik sınırına 2GB üzerindeyse bu olmaz işler
phuclv

... ki bu günlerde oldukça ciddi bir sınırlama var!
rossmcm


1

dir /s Tüm dosyaların ve tüm alt klasörlerdeki dosyaların boyutlarını listeler.


1

Bu soruyu kullanarak dosya boyutu analizi için sordum CMD line. Ancak, kullanmaya PowerQuery (Excel add-in, versions 2010+)açıksanız, oldukça etkileyici bir dosya boyutu analizi oluşturabilirsiniz.

Aşağıdaki komut dosyası bir Boş Sorguya yapıştırılabilir; Yapmanız gereken tek şey "paramRootFolderSearch" adlı bir parametre eklemek ve ardından "C: \ Users \ bl0040 \ Dropbox \" gibi değerinizi eklemek. Bunu bir kılavuz olarak kullandım: MSSQLTips: Power Query kullanarak dosya boyutlarından dosya boyutlarını al .

Bu sorgu benim için bir özet tablo ( [Folder Root]> [Folder Parent (1-2)], [Name]) oluşturmam için veri sağladı ve dizinimdeki çok fazla alanı temizleyen birkaç dosyayı silebildim.

PowerQuery için M betiği :

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)"

Klasör Dosyası Sizes_xlsx.png

görüntü tanımını buraya girin

Klasör Dosyası Sizes_xlsx2.png

görüntü tanımını buraya girin


0

Sadece güç kabuğunu açın ve du -sh <directory>3. parti veya sys-internals kurmanıza gerek yok. Power-shell içinde ls veya du komutları gibi bazı basit Linux komutları çalıştırabilirsin, bazı anahtarlar gibi ls -altçalışmaz, powershell -alt'ın ne olduğunu bilmediğinden hata verir ...


3
PowerShell'in hangi sürümünü kullanıyorsunuz? Sysinternals'ın kurulu olmadığından emin misin? "Du" komutu, erişebildiğim herhangi bir sistemde yerleşik olarak görünmüyor. Bazı dokümantasyon linkleri de yardımcı olabilir.
anlag

Windows 10'un en yeni ve hızlı öğrenen kanalındayım ve kesinlikle dukullanılabilecek bir komut yok
phuclv 11.03:

-2

"Dir" komutu, geçerli dizinin dosya boyutunu, son değişiklik tarihini ve saatini sağlar. İlk önce cdkomutu kullanma boyutuna bakmak istediğiniz dizine gitmeyi deneyin , sonra dirkomutu kullanın.

C:\>dir 

Şu anda bulunduğunuz dizinde bulunan tüm dosya ve dizinlerin dosya boyutunu, son değişiklik tarihini ve saatini alfabetik olarak sıralar.


3
Bu da kötü bir cevap. Bu, geçerli dizindeki tüm dosyaların birleşik boyutunu çıkarır. Ancak geçerli dizindeki herhangi bir dizinin boyutunu çıkarmaz. Bu sadece operasyonun istediği şeyi yapmaz.
dgo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.