我的批次有问题。
批量测试目录的大小,当它太大时,它会删除最旧的文件。
批次:
@echo off
setlocal enabledelayedexpansion
net use T: /d
net use T: \\10.230.78.22\survcam
set dossiure=T:\
set "$max=204010946560"
Echo traitement en cours....
:loop
for /f "tokens=3 delims= " %%a in ('dir %dossiure% ^| find /i "octets"') do (
set $NbBytes=%%a
goto:test
)
:test
If %$NbBytes% GTR %$max% (
for /f "delims=" %%a in ('dir %dossiure% /b/a-d/od') do (
set LeVieux="%dossiure%%%a"
Echo Destruction de : [!LeVieux!]
del "!LeVieux!"
goto:wait
)
)
goto:fin
:wait
rem ping localhost -n 1
goto:loop
:fin
net use T: /d
echo fini
当$ max = 85899345920
没关系(80GiB)
但是当$ max = 204010946560时
它比指定的尺寸(190GiB)更多
它就像它了解19Gib的限制
有人知道如何解决它吗?
答案 0 :(得分:2)
批量数字变量的最大值为2 ^ 31。
尝试在Mib中计算或使用2个变量(Mb和字节)
但是,既然你的变量都是单个字符串,你知道它们是数字的,那么试试
set "$$max=000000000000000000000%$max%"
set "$$NbBytes=000000000000000000%$NbBytes%"
if %$$NbBytes:~-18% GTR %$$max:~-18% (
也就是说,在变量前面添加大量0
s,然后比较结果字符串的最后 n (我选择18个)字符。