159

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

Windowsエクスプローラー→プロパティでフォルダーを右クリックしたときと同じ結果が必要です。

4

19 に答える 19

140

サイズを再帰的に追加することができます (以下はバッチ ファイルです)。

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

cmdただし、 32 ビットの符号付き整数演算に制限されているため、これにはいくつかの問題があります。そのため、2 GiB を超えるサイズが間違って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 ライブラリがあります。私は本当にそれを解放する必要があります、私は推測します:-)

于 2012-10-10T07:16:24.880 に答える
69

このリンクhttp://technet.microsoft.com/en-us/sysinternals/bb896651で、Microsoft が提供する Sysinternals Suite からユーティリティ DU をダウンロードすることをお勧めします。

usage: du [-c] [-l <levels> | -n | -v] [-u] [-q] <directory>
   -c     Print output as CSV.
   -l     Specify subdirectory depth of information (default is all levels).
   -n     Do not recurse.
   -q     Quiet (no banner).
   -u     Count each instance of a hardlinked file.
   -v     Show size (in KB) of intermediate directories.


C:\SysInternals>du -n d:\temp

Du v1.4 - report directory disk usage
Copyright (C) 2005-2011 Mark Russinovich
Sysinternals - www.sysinternals.com

Files:        26
Directories:  14
Size:         28.873.005 bytes
Size on disk: 29.024.256 bytes

あなたがそれをしている間、他のユーティリティを見てください。彼らはすべての Windows Professional の命の恩人です

于 2012-10-10T07:16:29.437 に答える
19

コンピューターに git がインストールされている場合 (ますます一般的になっています)、MINGW32 を開いて次のように入力します。du folder

于 2014-05-08T14:02:54.720 に答える
2

Windows CMD を開き、次のコマンドを実行します

dir /s c:\windows
于 2021-07-02T06:59:01.097 に答える
1

私はdu.exe私のgitディストリビューションで手に入れました。別の場所は、前述の Microsoft またはUnxutilsかもしれません。

パスに du.exe を取得したら。これがあなたのfileSizes.batものです:-)

@echo ___________
@echo DIRECTORIES
@for /D %%i in (*) do @CALL du.exe -hs "%%i"
@echo _____
@echo FILES
@for %%i in (*) do @CALL du.exe -hs "%%i"
@echo _____
@echo TOTAL
@du.exe -sh "%CD%"

➪</p>

___________
DIRECTORIES
37M     Alps-images
12M     testfolder
_____
FILES
765K    Dobbiaco.jpg
1.0K    testfile.txt
_____
TOTAL
58M    D:\pictures\sample
于 2015-10-24T17:13:28.887 に答える
1

あなたの唯一の選択肢は diruse になると思います(高度にサポートされているサードパーティのソリューション):

コマンドラインからファイル/ディレクトリのサイズを取得する

残念ながら、Windows CLI は非常に制限的です。代わりに、 Cygwinをインストールすることもできます。これは、cmd と比較して使用するのが夢です。これにより、Windows 上の diruse の基礎となる、移植された Unix ツール du にアクセスできるようになります。

申し訳ありませんが、ネイティブ cli で実行できるコマンドを使用して、質問に直接答えることができませんでした。

于 2012-10-10T07:22:48.100 に答える
-3

合計サイズだけを取得する最も簡単な方法はpowershellですが、260文字を超えるパス名は合計に含まれないという事実によって制限されます

于 2015-02-02T19:22:24.697 に答える