バッチファイルで古いファイルから削除

mp4にエンコードしたファイルを格納してるフォルダのファイルサイズ合計が指定した容量を超えないようにするバッチファイルを書いてみた。バッチファイル内で扱える数値はファイルサイズで言うところの2GBまでと小さいのでディスク容量を一定に保つならファイルアロケーションユニット単位(4096バイトで割った値)でいいだろうってことで、そのように処理している。ただ、ファイルサイズが2GBを超えるものが1つでもあれば正常に動作しない。

@ECHO OFF
SET ND="%~dp0"
SET /A LS=128*1024/4096*1024*1024
SET /A NS=0
FOR /F "usebackq delims= eol=" %%I IN (`DIR /A-D /B /O-N %ND%`) DO CALL :MAIN "%ND:~1,-1%%%~I"
EXIT /B
:MAIN
IF %NS% LEQ %LS% SET /A NS=%NS%+(%~z1+4095)/4096
IF %NS% GTR %LS% DEL /F /Q "%~1"
EXIT /B