windows批量变量的最大值

时间:2016-10-27 23:01:40

标签: windows batch-file variables size max


我的批次有问题。 批量测试目录的大小,当它太大时,它会删除最旧的文件。

批次:

@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的限制 有人知道如何解决它吗?

1 个答案:

答案 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个)字符。