コマンドプロンプトから利用可能な空きバイトをメガバイト単位で表示する

Windows版のEC2インスタンスなどで定期的にディスクの空き容量をチェックするケースがあると思いますが、以下のようなバッチ処理をタスクで実行することで定期的に容量チェックを行うことが可能です。

この結果をファイルに出力してメールで送信する、CloudWatchにプロットするなど色々方法があるかと思います。

@echo off

for /F "tokens=1,2,*" %%I in ('fsutil volume diskfree C:') do (
    if %%I==利用可能な空きバイト総数 (
        call :trim %%K
    )
)

PAUSE
exit 0


:trim
set str=%~1
set num=%str:~0,-3%
set /a M=1024
set /a int=%num% / %M%
set MB=%int%
echo %MB%MB
exit /b 0

残念ながらcmd.exeで扱える整数は32bit整数になり、それを超える値が入ると

「無効な数字です。数値は 32 ビットで表記される数値です。」

といったエラーが表示されるため、

set num=%str:~0,-3%

で擬似的に桁数を調整しています。その上で1024で割っているので値はあくまで参考値になります。

残り容量チェックで1GBを切ったらまずい、などで判断すると思うので、この程度で耐えうるかと思います。