1. ホーム
  2. windows

[解決済み] Windowsのコマンドラインからフォルダサイズを取得する

2022-04-26 02:23:50

質問

Windowsでは、サードパーティツールを使用せずに、コマンドラインからフォルダのサイズを取得することは可能でしょうか?

Windowsエクスプローラでフォルダを右クリック→プロパティで表示されるのと同じ結果が欲しいのですが。

解決方法は?

再帰的にサイズを加算していけばよいのです(以下はバッチファイルです)。

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

しかし、これにはいくつかの問題があります。 cmd は32ビット符号付き整数演算に制限されています。そのため、2GiB以上のサイズを取得することはできません。 1 . さらに、シンボリックリンクやジャンクションを複数回カウントする可能性があるので、せいぜい上限値であって、本当のサイズではありません(どんなツールでもこの問題はありますけどね)。

代替案として、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ライブラリがバッチファイルとしてどこかに保存されています。私はそれを本当にリリースすべきだと思います :-)