从Windows命令行获取文件夹大小
从Windows命令行获取文件夹大小
在Windows上,有没有可能在不使用任何第三方工具的情况下通过命令行获取文件夹的大小?
我想要的结果与在Windows资源管理器中右键单击该文件夹并选择“属性”时获得的结果相同。
admin 更改状态以发布 2023年5月23日
你可以通过递归添加文件大小(以下是批处理文件):
@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库,至少能正确执行任意精度整数加法。我想我应该发布它,呵呵 🙂