Windows で、サードパーティのツールを使用せずにコマンド ラインからフォルダのサイズを取得することは可能ですか?
Windowsエクスプローラー→プロパティでフォルダーを右クリックしたときと同じ結果が必要です。
Windows で、サードパーティのツールを使用せずにコマンド ラインからフォルダのサイズを取得することは可能ですか?
Windowsエクスプローラー→プロパティでフォルダーを右クリックしたときと同じ結果が必要です。
サイズを再帰的に追加することができます (以下はバッチ ファイルです)。
@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 ライブラリがあります。私は本当にそれを解放する必要があります、私は推測します:-)
このリンク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 の命の恩人です
コンピューターに git がインストールされている場合 (ますます一般的になっています)、MINGW32 を開いて次のように入力します。du folder
Windows CMD を開き、次のコマンドを実行します
dir /s c:\windows
私は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
あなたの唯一の選択肢は diruse になると思います(高度にサポートされているサードパーティのソリューション):
残念ながら、Windows CLI は非常に制限的です。代わりに、 Cygwinをインストールすることもできます。これは、cmd と比較して使用するのが夢です。これにより、Windows 上の diruse の基礎となる、移植された Unix ツール du にアクセスできるようになります。
申し訳ありませんが、ネイティブ cli で実行できるコマンドを使用して、質問に直接答えることができませんでした。
合計サイズだけを取得する最も簡単な方法はpowershellですが、260文字を超えるパス名は合計に含まれないという事実によって制限されます