3

フォルダーのサイズを確認すると、次のようになります。

for %i in (*) do @set /a size+=%~zi
166576251665763016658914166589201665917416659428166596821665993616660190166601951666038416660487168652871687269016872716169860941698686116986931169872071698728616987313169875941698775316987908169884331700481717005585170056001700563417005891170059181700605117007696170076961700782617021650170218471702192817022003170220911702211617022141170222091702227017022755170228501702370517023960170242831702453617024848170252511702526817578552175800371758003717580037175800371758003717580037175826531758490317591537175919931759206017592095175921301764998617650665176520351765318217654163176541681772380017723825177251031772519925614095256149392561514625615899256181532599996926105233264957532672798526897833268979242689853526898590268986582689871926898790269001782690062626900643269008432690103926907695269077312690853826909921269100822691020226910240269105802691578626915899269343312693438226935123269842752698438326984697269990372701337927013912270139282701420927014362270144002701448427014572274675622746760127468336275041762753080027530915275319062753190627535850275367832756033527560455275605872756248927562632275846482783706427968251279696822797111327972544279739752797540627976865279782962797972727981158279811582805130228051656
echo %size%
28051656

しかし、dir コマンドはサイズが1,907,481,021バイトだと言っています! 何がうまくいかないのですか?どうすれば適切なサイズを取得できますか? folder size を返すこのバッチファイルがありますが、大きな単位を MB、GB にしたくありません。サイズを変数に入れたい。

ありがとう。

4

5 に答える 5

2

dirこれを試してみてください。次のコマンドでフォルダーのサイズを読み取ります。

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
FOR /f "tokens=3" %%a IN ('dir /a-d /-c') DO (
    SET size=!free!
    SET free=%%a
)
ECHO %size% bytes in %cd%

これは、ヨーロッパの時刻形式で機能します。AM/PMフォーマット セットの場合tokens=4
これは Aacini によるソリューションです。

于 2013-07-25T13:28:06.777 に答える
1

算術オーバーフローに直面しています。小切手

 SET /A s=2147483647+1

環境変数の演算は、32 ビットの符号付き整数で行われます。

したがって、安全に合計できる最大サイズは です2^31-1 = 2147483647

于 2013-07-25T13:03:02.810 に答える
1

テキスト ファイルに格納された一連のフォルダーののコード:

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
SET "file=file"
SET /a allsize=0
for /f %%x in (
'for /f "usebackqdelims=" %%a in (%file%^) do @(
    for /f "tokens=3" %%b in ('dir /a-d /-c "%%~a" ^^^|findstr /BR "[0-9]"'^) do @ECHO(%%b^)'
) do (
    FOR /f %%i IN ('awk "BEGIN {a=%%x+!allsize!; print a}"') DO SET "allsize=%%i"
)
ECHO Size of all folders listet in %file%:
awk "BEGIN {a=%allsize%; printf(\"%%10d %%s\",a,\"bytes\n\")}"
awk "BEGIN {a=%allsize%/1024; printf(\"%%10d %%s\",a,\"KB\n\")}"
awk "BEGIN {a=%allsize%/1024/1024; printf(\"%%10d %%s\",a,\"MB\n\")}"
awk "BEGIN {a=%allsize%/1024/1024/1024; printf(\"%%10.2g %%s\",a,\"GB\n\")}"

例:

ファイル内のすべてのフォルダ listet のサイズ:
1907481021 バイト
   1862774KB
      1819メガバイト
       1.8GB
于 2013-07-26T11:28:28.027 に答える