Я почти уверен, что у вас 2 проблемы. Первая проблема заключается в том, что вы делаете алфавитное сравнение. Таким образом, "7"
будет считаться GTR
"6000000000"
.
Ваша вторая проблема заключается в том, что число c операций в cmd ограничено 32-битными целыми числами. Максимальное число, которое вы можете использовать, составляет 2 ^ 31 - 1, то есть 2147483647, что уже меньше, чем число, которое вас интересует.
Типичный обходной путь здесь - это сравнить "важные" части строка или усечение N младших значащих цифр.
Вот пример quick . Может содержать проблемы / ошибки в реализации. Я сделал echo exit /b
, чтобы скрипт запускался, и вы могли видеть результаты вместо exit /b
.
@echo off
setlocal enabledelayedexpansion
rem first we will inspect the 10th and 11th digits from the right
set foldsize=7000000010
rem If there is any number in the 11th spot, then it must be greater
if not "!foldsize:~0,-10!"=="" (
rem the number is at least 10000000000 which is greater so we exit
echo exit /B 0
)
rem check if the 10th digit is 6 or greater
rem add a zero to avoid issues with an undefined variable
set smallfoldsize=!foldsize:~0,-9!
if !smallfoldsize!0 GTR 50 (
rem technically the number is now greater or equal to 6000000000
rem I will leave it up to you if you really need it to be greater than
echo exit /B 0
) else (
rem it is smaller
echo exit /B 1999
)
rem an alternative is to discard the N least significant digits
rem I am stripping the last 7 digits and then adding a zero to avoid
rem an undefined variable
set smallfoldsize=!foldsize:~0,-7!0
if !smallfoldsize! GEQ 6000 (
echo exit /B 0
) else (
echo exit /B 1999
)
rem again, this is actual greater or equal. If you
rem need greater than, you have to look at the less
rem significant digits when smallfoldsize = 6000