如何从Windows命令行检查文件夹的大小?


36

我想使用Windows命令行来计算文件夹和子文件夹中所有文件的大小。我通常可以通过右键单击该文件夹,然后单击“属性”来执行此操作,但是我希望能够在命令行上执行此操作。

我可以使用哪个命令?

Answers:


33

您将要使用dir /a/s它,使其包含每个文件,包括系统文件和隐藏文件。这将为您提供所需的总大小。


告诉我您的命令输出如何显示目录的总大小。编辑您的答案以包括它。我将删除我的评论并撤消我的不赞成票。
dgo

2
@ user1167442您显然还没有尝试过。输出包括与资源管理器属性完全相同的大小。
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

在我的机器上,这似乎比略快dir /s /a,因为它不会将每个对象的信息打印到屏幕上。

要从普通命令提示符运行它:

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

我希望我花更多的时间在Powershell上。我只是出于某些原因从不喜欢使用它-即使它对很多东西都非常有用
-dgo

很棒的解决方案-太快了!
TrojanName

7

DOS或Windows命令行中没有内置这样的命令。在Linux上,有duD isk U sage)命令。

微软的Sysinternals工具系列具有du与Linux 大致相同的工具。也称为du;)


1
du -sh <directory>是我在Linux上(或通过git通过w / du进行的Windows)上显示目录大小的易于理解的摘要。
kavun 2015年

谢谢,这正是我所需要的。随着光盘变大,右键单击属性以获取文件大小的时间越来越长,并且无法选择结果并将其复制到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

如果由于cmd中的算术限制而导致总大小超过2GB,将无法正常工作
phuclv

...这几天是一个相当严重的限制!
rossmcm


1

dir /s 将列出所有文件的大小以及所有子文件夹中的文件


1

我意识到这个问题要求使用进行文件大小分析CMD line。但是,如果您愿意使用它,PowerQuery (Excel add-in, versions 2010+)则可以创建一些非常引人注目的文件大小分析。

下面的脚本可以粘贴到空白查询中;您唯一需要做的就是添加一个名为“ paramRootFolderSearch”的参数,然后添加您的值,例如“ C:\ Users \ bl0040 \ Dropbox \”。我以此为指导:MSSQLTips:使用Power Query从文件系统检索文件大小

该查询为我提供了创建数据透视表([Folder Root]> [Folder Parent (1-2)], [Name])的数据,并且我能够识别出一些可以删除的文件,从而清除了目录中的大量空间。

这是PowerQuery的M脚本

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

文件夹文件Sizes_xlsx.png

在此处输入图片说明

文件夹文件Sizes_xlsx2.png

在此处输入图片说明


0

只需打开电源外壳,du -sh <directory>无需安装3rd party或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
这也是一个不好的答案。这将输出当前目录中所有文件的总大小。但是,它将不会输出当前目录中任何目录的大小。这根本不符合操作人员的要求。
dgo's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.