Bagaimana saya bisa memeriksa ukuran folder dari baris perintah Windows?

36

Saya ingin menggunakan baris perintah Windows untuk menghitung ukuran semua file dalam folder dan subfolder. Saya biasanya melakukan ini dengan mengklik kanan pada folder dan mengklik "Properties" tetapi saya ingin dapat melakukannya di baris perintah.

Perintah mana yang bisa saya gunakan?

pengguna1605665
sumber

Jawaban:

33

Anda akan ingin menggunakannya dir /a/ssehingga mencakup setiap file, termasuk sistem dan file tersembunyi. Ini akan memberi Anda ukuran total yang Anda inginkan.

RockPaperLizard
sumber
Tunjukkan pada saya bagaimana output dari perintah Anda memberi saya ukuran total direktori. Edit jawaban Anda untuk memasukkannya. Saya akan menghapus komentar saya dan membalikkan suara saya.
Mulai
2
@ user1167442 Anda jelas belum mencobanya. Outputnya mencakup ukuran yang sama persis dengan yang diberikan properti explorer.
DavidPostill
1
@ DavidPostill - Anda benar. Aku malu sekali. Saya akan membalikkan downvote. Yang mengatakan, saya masih tidak terlalu tertarik pada solusi ini - saya lebih suka sesuatu yang sedikit lebih cepat yang tidak memerlukan keluaran semua hal lain, tetapi itu berhasil. Saya telah keliru. - Ahh gila - itu tidak akan, biarkan aku membalikkan downvote saya. Segera setelah saya mendapatkan reputasi untuk melakukannya, saya akan membalikkannya.
Lakukan
1
Berhasil
1
@QHarr Ya, silakan dan kirim pertanyaan dan saya akan menulis jawaban untuk Anda. Dengan begitu, ini akan membantu semua orang dengan mencari semua yang bisa ditemukan.
RockPaperLizard
13

Anda dapat menggunakan PowerShell!

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

Ini berulang melalui seluruh direktori saat ini (mengabaikan direktori yang tidak dapat dimasukkan) dan merangkum ukuran masing-masing file. Kemudian ia mencetak ukuran total dalam byte.

Satu liner yang dipadatkan:

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

Di mesin saya, ini tampaknya sedikit lebih cepat daripada dir /s /a, karena tidak mencetak informasi setiap objek ke layar.

Untuk menjalankannya dari prompt perintah normal:

powershell -command "$totalsize=[long]0;gci -File -r -fo -ea Silent|%{$totalsize+=$_.Length};$totalsize"
Ben N
sumber
Saya berharap saya menghabiskan lebih banyak waktu dengan PowerShell. Aku tidak pernah seperti menggunakannya untuk beberapa alasan - meskipun itu super berguna untuk banyak hal
dgo
Solusi hebat - sangat cepat juga!
TrojanName
7

Tidak ada perintah seperti itu dibangun ke dalam DOS atau Windows Command Line. Di Linux, ada perintah du( D isk U sage).

Lini alat Microsoft Sysinternals memiliki alat yang kira-kira setara dengan dudi Linux. Ini juga disebut du. ;)

Daniel B
sumber
1
du -sh <directory>adalah saya pergi ke Linux (atau windows w / du via git) untuk menunjukkan ringkasan yang dapat dibaca manusia dari ukuran direktori.
kavun
Terima kasih, itulah yang saya butuhkan. Ketika cakram menjadi lebih besar, dibutuhkan lebih lama dan lebih lama untuk mengklik kanan properti untuk mendapatkan ukuran file dan hasilnya tidak dapat dipilih dan disalin ke dalam kalk untuk memastikan pemisahan lebih dari beberapa cakram eksternal telah menulis setiap file di folder sumber. Saya telah menempatkan bahwa pada akhir batch robocopy disalurkan ke file teks kemudian ketika batch berakhir saya punya total file / folder / ukuran metrik yang dapat disalin / disisipkan ke dalam kalk untuk memastikan file dan byte adalah sama dengan sumbernya.
Michael Stimson
2

Ukuran folder dapat dihitung dengan skrip batch berikut:

@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
no73
sumber
Bagaimana cara menjalankan ini di Windows 7?
klm123
ini tidak akan berfungsi jika ukuran total lebih dari 2GB karena batas aritmatika dalam cmd
phuclv
... yang hari ini adalah batasan yang cukup serius!
rossmcm
2

Anda masih dapat menggunakan utilitas baris perintah diruse.exedari Windows 2000 Resource Kit yang tersedia di sini:

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

Ini bekerja pada Windows 8.1 tanpa masalah.

RockHead
sumber
Nice find, mungkinkah Anda menambahkan contoh penggunaan?
Burgi
1

dir /s Akan mencantumkan ukuran semua file dan file di semua subfolder

Keltari
sumber
1

Saya menyadari pertanyaan ini meminta analisis ukuran file menggunakan CMD line. Tetapi jika Anda terbuka untuk menggunakan PowerQuery (Excel add-in, versions 2010+)maka Anda dapat membuat beberapa analisis ukuran file yang cukup menarik.

Skrip di bawah ini dapat disisipkan ke dalam Kueri Kosong; Satu-satunya hal yang perlu Anda lakukan adalah menambahkan parameter bernama "paramRootFolderSearch" kemudian menambahkan nilai Anda, seperti "C: \ Users \ bl0040 \ Dropbox \". Saya menggunakan ini sebagai panduan: MSSQLTips: Ambil ukuran file dari sistem file menggunakan Power Query .

Kueri ini memberikan data bagi saya untuk membuat tabel pivot ( [Folder Root]> [Folder Parent (1-2)], [Name]), dan saya dapat mengidentifikasi beberapa file yang dapat saya hapus yang membersihkan banyak ruang di direktori saya.

Berikut ini skrip M untuk 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)"

File Folder Sizes_xlsx.png

masukkan deskripsi gambar di sini

File Folder Sizes_xlsx2.png

masukkan deskripsi gambar di sini

Lembar kerja Sherlock
sumber
0

Cukup buka catu daya dan jangan du -sh <directory>menginstal pihak ke-3 atau sistem-internal. Di dalam Power-shell Anda dapat menjalankan beberapa perintah Linux sederhana seperti perintah ls atau du, beberapa sakelar tidak akan berfungsi seperti ls -altkehendak kesalahan karena PowerShell tidak tahu apa-a ...

tmac
sumber
3
Versi PowerShell apa yang Anda gunakan? Dan Anda yakin tidak menginstal Sysinternals? Perintah "du" tampaknya tidak dibangun di sistem mana pun yang saya akses. Beberapa tautan dokumentasi juga akan sangat membantu.
anlag
Saya di saluran insider cepat terbaru dari Windows 10 dan sama sekali tidak ada duperintah yang tersedia
phuclv
-2

Perintah "dir" memberikan ukuran file, tanggal modifikasi terakhir dan waktu direktori saat ini. Pertama coba pindah ke direktori yang ingin Anda lihat ukuran menggunakan cdperintah, kemudian gunakan dirperintah.

C:\>dir 

Daftar ukuran file, tanggal modifikasi terakhir dan waktu semua file dan direktori di direktori tempat Anda berada saat ini, dalam urutan abjad.

vembutech
sumber
3
Ini juga jawaban yang buruk. Ini akan menampilkan ukuran gabungan dari semua file di direktori saat ini. Namun itu tidak akan menampilkan ukuran direktori apa pun di direktori saat ini. Ini sama sekali tidak melakukan apa yang diminta op.
Mulai