Я использую пакетную программу для получения размера файлов, и я столкнулся с проблемой, когда размер превышает определенное количество байтов, при этом возникает ошибка, говорящая о числах, ограниченных до 32 бит точности. Я пробовал обойти это, сделав его kibobits и mebibits, но как только программа определит, что файл имеет определенный размер, он просто отказывается что-либо делать.Пакетные файлы слишком большие, чтобы читать
@echo off
set kbno=0
set mbno=0
set var=(this would be the output of the file size)
:kbcheck
if /i %var% GTR 1024 (
goto 10kbcheck
) else (
goto setsize
)
:10kbcheck
if /i %var% GTR 10240 (
goto 50kbcheck
) else (
set /a kbno+=1
set /a var=%var%-1024
goto kbcheck
)
:50kbcheck
if /i %var% GTR 51200 (
goto 100kbcheck
) else (
set /a kbno+=10
set /a var=%var%-10240
goto kbcheck
)
:100kbcheck
if /i %var% GTR 102400 (
goto 500kbcheck
) else (
set /a kbno+=50
set /a var=%var%-51200
goto kbcheck
)
:500kbcheck
if /i %var% GTR 512000 (
goto mbcheck
) else (
set /a kbno+=100
set /a var=%var%-102400
goto kbcheck
)
:mbcheck
if /i %var% GTR 1048576 (
set /a mbno+=1
set /a var=%var%-1048576
goto kbcheck
) else (
set /a kbno+=500
set /a var=%var%-512000
goto kbcheck
)
:setsize
set size=%var%
echo %mbno% mebibits %kbno% kibibits %size% bits
pause
Но ошибка в значительной степени делает это бесполезно
Не могли бы вы дать нам фрагмент кода? – Rafael
Um «командный файл» на самом деле не указывает, о каком сценарии мы говорим. Кроме того, некоторый код будет приятным. –
@ MarcusMüller - «пакетный файл» в «Переполнение стека» относится к командному языку Windows. Прочтите тег. – SomethingDark