ฉันจะตรวจสอบขนาดของโฟลเดอร์จากบรรทัดคำสั่ง Windows ได้อย่างไร


36

ฉันต้องการใช้บรรทัดคำสั่งของ Windows เพื่อคำนวณขนาดของไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อย ปกติแล้วฉันจะทำสิ่งนี้โดยการคลิกขวาที่โฟลเดอร์และคลิกที่ "Properties" แต่ฉันต้องการที่จะทำมันในบรรทัดคำสั่ง

ฉันสามารถใช้คำสั่งใดได้บ้าง

คำตอบ:


33

คุณจะต้องใช้dir /a/sเพื่อให้มันรวมทุกไฟล์รวมถึงระบบและไฟล์ที่ซ่อนอยู่ นี่จะทำให้คุณมีขนาดรวมที่คุณต้องการ


แสดงให้ฉันดูว่าผลลัพธ์ของคำสั่งของคุณให้ขนาดโดยรวมของไดเรกทอรีอย่างไร แก้ไขคำตอบของคุณเพื่อรวมไว้ ฉันจะลบความคิดเห็นของฉันและย้อนกลับการลงคะแนนของฉัน
dgo

2
@ user1167442 คุณยังไม่ได้ลอง ผลลัพธ์รวมถึงขนาดที่แน่นอนที่คุณสมบัติของโปรแกรมสำรวจช่วยให้คุณได้
DavidPostill

1
@DavidPostill - คุณถูกต้อง ฉันรู้สึกละอายใจ ฉันจะย้อนกลับการโหวต ที่กล่าวว่าฉันยังไม่กระตือรือร้นในการแก้ปัญหานี้ - ฉันต้องการบางสิ่งที่เร็วกว่าซึ่งไม่ต้องการแสดงผลลัพธ์อื่น ๆ ทั้งหมด แต่ใช้งานได้ ฉันมีข้อผิดพลาด - Ahh nuts - ชนะไม่ให้ฉันย้อนกลับ downvote ของฉัน ทันทีที่ฉันได้รับชื่อเสียงให้ทำฉันจะย้อนกลับ
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"

ฉันหวังว่าฉันจะใช้เวลากับ PowerShell มากขึ้น ฉันไม่เคยชอบที่จะใช้มันด้วยเหตุผลบางอย่าง - แม้ว่ามันจะมีประโยชน์มากสำหรับสิ่งต่าง ๆ มากมาย
dgo

ทางออกที่ดีเยี่ยม - รวดเร็วเช่นกัน!
TrojanName

7

ไม่มีคำสั่งดังกล่าวสร้างขึ้นใน DOS หรือ Windows Command Line บน Linux มีคำสั่งdu( D isk U sage)

กลุ่มเครื่องมือ Sysinternals ของ Microsoft มีเครื่องมือที่เทียบเท่าduกับ Linux มันเรียกว่ายัง du;)


1
du -sh <directory>เป็นของฉันไปที่ Linux (หรือ windows w / du ผ่าน git) เพื่อแสดงสรุปขนาดมนุษย์สามารถอ่านได้ของไดเรกทอรี
kavun

ขอบคุณนั่นคือสิ่งที่ฉันต้องการ เมื่อดิสก์มีขนาดใหญ่ขึ้นจะใช้เวลานานขึ้นและนานขึ้นในการคลิกขวาคุณสมบัติเพื่อรับขนาดไฟล์และไม่สามารถเลือกและคัดลอกผลลัพธ์ลงใน calc เพื่อให้แน่ใจว่าการแยกแผ่นดิสก์ภายนอกหลายแผ่นเขียนทุกไฟล์ในโฟลเดอร์ต้นทาง ฉันใส่ที่ส่วนท้ายของชุด robocopy ไปยังไฟล์ข้อความแล้วเมื่อชุดสิ้นสุดฉันมีตัวชี้วัดรวมไฟล์ / โฟลเดอร์ / ขนาดที่สามารถคัดลอก / วางลงใน calc เพื่อให้แน่ใจว่าไฟล์และไบต์เป็น เหมือนกับแหล่งที่มา
Michael Stimson

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

สิ่งนี้จะไม่ทำงานหากขนาดรวมเกิน 2GB เนื่องจากข้อ จำกัด ทางคณิตศาสตร์ในหน่วย cmd
phuclv

... ซึ่งวันนี้เป็นข้อ จำกัด ที่ร้ายแรงมาก!
rossmcm

2

คุณยังสามารถใช้อรรถประโยชน์บรรทัดคำสั่งdiruse.exeจาก Kit ทรัพยากรของ Windows 2000 ได้ที่นี่:

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

มันทำงานบน Windows 8.1 ได้โดยไม่มีปัญหาใด ๆ


เยี่ยมมากคุณสามารถเพิ่มตัวอย่างการใช้งานได้หรือไม่?
Burgi

1

dir /s จะแสดงรายการขนาดของไฟล์ทั้งหมดและไฟล์ในโฟลเดอร์ย่อยทั้งหมด


1

CMD lineผมทราบดีว่าคำถามนี้ถามสำหรับการวิเคราะห์ขนาดไฟล์โดยใช้ แต่ถ้าคุณเปิดให้ใช้PowerQuery (Excel add-in, versions 2010+)แล้วคุณสามารถสร้างการวิเคราะห์ขนาดไฟล์ที่น่าสนใจ

สคริปต์ด้านล่างสามารถวางลงในคิวรีว่างได้ สิ่งเดียวที่คุณต้องทำคือเพิ่มพารามิเตอร์ชื่อ "paramRootFolderSearch" จากนั้นเพิ่มค่าของคุณเช่น "C: \ Users \ bl0040 \ Dropbox \" ผมใช้วิธีนี้เป็นคู่มือ: MSSQLTips: ดึงขนาดไฟล์จากระบบไฟล์โดยใช้พลังงานแบบสอบถาม

แบบสอบถามนี้ให้ข้อมูลสำหรับฉันในการสร้างตารางสาระสำคัญ ( [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>ไม่จำเป็นต้องติดตั้งบุคคลที่สามหรือ sys-internals ภายใน Power-shell คุณสามารถเรียกใช้ Linux อย่างง่ายเช่นคำสั่งเช่นคำสั่ง ls หรือ du สวิตช์บางอย่างจะไม่ทำงานเหมือนls -altจะเกิดข้อผิดพลาดเนื่องจาก PowerShell ไม่ทราบว่า -alt คืออะไร ...


3
คุณใช้ PowerShell เวอร์ชันใดอยู่ และคุณแน่ใจหรือว่าคุณไม่ได้ติดตั้ง Sysinternals คำสั่ง "du" ไม่ปรากฏว่ามีอยู่แล้วในระบบใด ๆ ที่ฉันสามารถเข้าถึงได้ ลิงค์เอกสารบางอย่างก็มีประโยชน์เช่นกัน
anlag

ฉันใช้ช่องสัญญาณภายในที่เร็วที่สุดของ Windows 10 และไม่มีduคำสั่งให้ใช้อย่างแน่นอน
phuclv

-2

คำสั่ง "dir" จัดเตรียมขนาดไฟล์วันที่แก้ไขล่าสุดและเวลาของไดเร็กทอรีปัจจุบัน ก่อนอื่นให้ลองย้ายไปยังไดเรกทอรีที่คุณต้องการดูขนาดการใช้cdคำสั่งจากนั้นใช้dirคำสั่ง

C:\>dir 

แสดงขนาดไฟล์วันที่แก้ไขล่าสุดและเวลาของไฟล์และไดเรกทอรีทั้งหมดในไดเรกทอรีที่คุณอยู่ในปัจจุบันตามลำดับตัวอักษร


3
นี่เป็นคำตอบที่ไม่ดีเช่นกัน นี่จะเอาท์พุทขนาดรวมของไฟล์ทั้งหมดในไดเรกทอรีปัจจุบัน มันจะไม่ส่งออกขนาดของไดเรกทอรีใด ๆ ในไดเรกทอรีปัจจุบัน สิ่งนี้ไม่ได้ทำในสิ่งที่ op ขอมา
dgo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.