Làm cách nào để kiểm tra kích thước của thư mục từ dòng lệnh Windows?


36

Tôi muốn sử dụng dòng lệnh Windows để tính kích thước của tất cả các tệp trong một thư mục và thư mục con. Tôi thường làm điều này bằng cách nhấp chuột phải vào thư mục và nhấp vào "Thuộc tính" nhưng tôi muốn có thể làm điều đó trên dòng lệnh.

Tôi có thể sử dụng lệnh nào?

Câu trả lời:


33

Bạn sẽ muốn sử dụng dir /a/sđể nó bao gồm mọi tệp, bao gồm các tệp hệ thống và ẩn. Điều này sẽ cung cấp cho bạn tổng kích thước bạn mong muốn.


Chỉ cho tôi cách đầu ra của lệnh cho tôi tổng kích thước của thư mục. Chỉnh sửa câu trả lời của bạn để bao gồm nó. Tôi sẽ xóa bình luận của tôi và đảo ngược phiếu bầu của tôi.
dgo

2
@ user1167442 Bạn rõ ràng chưa thử nó. Đầu ra bao gồm cùng kích thước chính xác mà các thuộc tính explorer cung cấp cho bạn.
DavidPostill

1
@DavidPostill - bạn đã đúng. Tôi xấu hổ vô cùng. Tôi sẽ đảo ngược downvote. Điều đó nói rằng, tôi vẫn không quá quan tâm đến giải pháp này - tôi thích thứ gì đó nhanh hơn một chút mà không yêu cầu xuất ra tất cả những thứ khác, nhưng nó hoạt động. Tôi đã sai lầm. - Ahh nut - nó đã thắng; hãy để tôi đảo ngược downvote của tôi. Ngay khi tôi có được danh tiếng để làm như vậy, tôi sẽ đảo ngược nó.
dgo 8/12/2016

1
Nó hoạt động - downvote bị xóa -)
dgo

1
@QHarr Vâng, hãy tiếp tục và gửi câu hỏi và tôi sẽ viết câu trả lời cho bạn. Bằng cách đó, nó sẽ giúp mọi người bằng cách tìm kiếm cho tất cả mọi người tìm thấy.
RockPaperLizard

13

Bạn có thể sử dụng PowerShell!

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

Điều này đệ quy thông qua toàn bộ thư mục hiện tại (bỏ qua các thư mục không thể nhập) và tổng hợp kích thước của mỗi tệp. Sau đó, nó in tổng kích thước tính bằng byte.

Nhỏ gọn một lớp lót:

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

Trên máy của tôi, điều này có vẻ nhanh hơn một chút dir /s /a, vì nó không in thông tin của từng đối tượng lên màn hình.

Để chạy nó từ một dấu nhắc lệnh bình thường:

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

Tôi ước tôi đã dành nhiều thời gian hơn với powershell. Tôi chỉ không bao giờ thích sử dụng nó vì một số lý do - mặc dù nó cực kỳ hữu ích cho nhiều thứ
dgo 9/12/2016

Giải pháp tuyệt vời - thực sự nhanh chóng quá!
TrojanName

7

Không có lệnh nào được tích hợp trong DOS hoặc Windows Command Line. Trên Linux, có lệnh du( D isk U sage).

Dòng công cụ Sysiternals của Microsoft có một công cụ gần tương đương với duLinux. Nó cũng được gọi du. ;)


1
du -sh <directory>Tôi sẽ truy cập Linux (hoặc windows w / du qua git) để hiển thị một bản tóm tắt dễ đọc của con người về kích thước thư mục.
kavun

Cảm ơn, đó chính xác là những gì tôi cần. Khi các đĩa trở nên lớn hơn, phải mất nhiều thời gian hơn và lâu hơn để nhấp chuột phải vào các thuộc tính để có được kích thước tệp và kết quả không thể được chọn và sao chép vào calc để đảm bảo phân chia trên nhiều đĩa bên ngoài đã ghi mọi tệp trong thư mục nguồn. Tôi đã đặt nó ở cuối một đợt sao chép vào một tệp văn bản sau đó khi lô kết thúc tôi đã có một số liệu tổng số tệp / thư mục / kích thước có thể được sao chép / dán vào calc để đảm bảo các tệp và byte là giống như nguồn.
Michael Promotionson

2

Kích thước thư mục có thể được tính với tập lệnh bó sau:

@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

Làm thế nào để chạy cái này trên Windows 7?
klm123

điều này sẽ không hoạt động nếu tổng kích thước lớn hơn 2GB do giới hạn số học tính bằng cmd
phuclv

... mà những ngày này là một hạn chế khá nghiêm trọng!
rossmcm

2

Bạn vẫn có thể sử dụng tiện ích dòng lệnh diruse.exetừ Bộ tài nguyên Windows 2000 có sẵn tại đây:

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

Nó hoạt động trên Windows 8.1 mà không gặp vấn đề gì.


Tìm thấy tốt, bạn có thể thêm vào một ví dụ về việc sử dụng?
Burgi

1

dir /s Sẽ liệt kê kích thước của tất cả các tệp và các tệp trong tất cả các thư mục con


1

Tôi nhận ra câu hỏi này yêu cầu phân tích kích thước tập tin bằng cách sử dụng CMD line. Nhưng nếu bạn đang mở để sử dụng PowerQuery (Excel add-in, versions 2010+)thì bạn có thể tạo một số phân tích kích thước tệp khá hấp dẫn.

Tập lệnh bên dưới có thể được dán vào Truy vấn trống; Điều duy nhất bạn cần làm là thêm một tham số có tên "paramRootFolderSearch" sau đó thêm giá trị của bạn, chẳng hạn như "C: \ Users \ bl0040 \ Dropbox \". Tôi đã sử dụng điều này như một hướng dẫn: MSSQLTips: Truy xuất kích thước tệp từ hệ thống tệp bằng Power Query .

Truy vấn này cung cấp dữ liệu cho tôi để tạo bảng xoay vòng ( [Folder Root]> [Folder Parent (1-2)], [Name]) và tôi có thể xác định một vài tệp mà tôi có thể xóa để xóa rất nhiều khoảng trống trong thư mục của mình.

Đây là tập lệnh M cho 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)"

Kích thước tệp thư mục_xlsx.png

nhập mô tả hình ảnh ở đây

Kích thước tệp thư mục_xlsx2.png

nhập mô tả hình ảnh ở đây


0

Chỉ cần mở vỏ điện và du -sh <directory>không cần cài đặt bên thứ 3 hoặc sys-internals. Trong Power-shell, bạn có thể chạy một số Linux đơn giản như các lệnh như ls hoặc du lệnh, một số công tắc sẽ không hoạt động như ls -altlỗi vì powershell không biết -alt là gì ...


3
Phiên bản PowerShell nào bạn đang sử dụng? Và bạn có chắc là bạn chưa cài đặt Sysiternals không? Lệnh "du" dường như không được tích hợp trên bất kỳ hệ thống nào tôi có quyền truy cập. Một số liên kết tài liệu cũng sẽ hữu ích.
anlag

Tôi đang ở trên kênh nội bộ nhanh nhất mới nhất của Windows 10 và hoàn toàn không có dulệnh nào
phuclv

-2

Lệnh "dir" cung cấp kích thước tệp, ngày và giờ sửa đổi cuối cùng của thư mục hiện tại. Trước tiên hãy thử di chuyển đến thư mục mà bạn muốn xem kích thước của việc sử dụng cdlệnh, sau đó sử dụng dirlệnh.

C:\>dir 

Liệt kê kích thước tệp, ngày và giờ sửa đổi cuối cùng của tất cả các tệp và thư mục trong thư mục mà bạn hiện đang ở, theo thứ tự bảng chữ cái.


3
Đây cũng là một câu trả lời tồi. Điều này sẽ xuất kích thước kết hợp của tất cả các tệp trong thư mục hiện tại. Tuy nhiên, nó sẽ không xuất kích thước của bất kỳ thư mục nào trong thư mục hiện tại. Điều này chỉ đơn giản là không làm những gì op yêu cầu.
dgo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.