从Windows命令行获取文件夹大小

17 浏览
0 Comments

从Windows命令行获取文件夹大小

在Windows上,有没有可能在不使用任何第三方工具的情况下通过命令行获取文件夹的大小?

我想要的结果与在Windows资源管理器中右键单击该文件夹并选择“属性”时获得的结果相同。

admin 更改状态以发布 2023年5月23日
0
0 Comments

你可以通过递归添加文件大小(以下是批处理文件):

@echo off
set size=0
for /r %%x in (folder\*) do set /a size+=%%~zx
echo %size% Bytes

然而,这有几个问题,因为 cmd 限于32位有符号整数算术。因此,它将错误地计算大于2 GiB的大小。此外,它可能会多次计算符号链接和链接点,因此最多只是一个上限,而不是真正的大小(不过您也会在任何工具中遇到这个问题)。

另一个选择是PowerShell:

Get-ChildItem -Recurse | Measure-Object -Sum Length

或者更短:

ls -r | measure -sum Length

如果你想要更漂亮的输出:

switch((ls -r|measure -sum Length).Sum) {
  {$_ -gt 1GB} {
    '{0:0.0} GiB' -f ($_/1GB)
    break
  }
  {$_ -gt 1MB} {
    '{0:0.0} MiB' -f ($_/1MB)
    break
  }
  {$_ -gt 1KB} {
    '{0:0.0} KiB' -f ($_/1KB)
    break
  }
  default { "$_ bytes" }
}

你可以直接从 cmd 使用这个:

powershell -noprofile -command "ls -r|measure -sum Length"


1 我确实有一个未完成的批文件bignum库,至少能正确执行任意精度整数加法。我想我应该发布它,呵呵 🙂

0
0 Comments

有一个内置的Windows工具可以做到这一点:

dir /s 'FolderName'

这将打印很多不必要的信息,但最后会显示文件夹大小,如下所示:

 Total Files Listed:
       12468 File(s)    182,236,556 bytes

如果需要包含隐藏文件夹,请添加/a

0