Я просмотрел, но не могу найти точное описание того, когда сравнение пакетного файла с использованием числовой операции сравнения (например, gtr) выполняется численно, а не обрабатывает его аргументы как строки.
Я нашел этот вопрос Ошибка командного файла Windows - Как 30000000000000 может равняться 40000000000? но его объяснение — если у вас есть какие-либо нецифровые символы, то IF выполняет сравнение строк — не является полным. Например:
@echo off& setlocal enabledelayedexpansion
if "123" gtr "99" echo greater
if 099 gtr 10 echo greater
if "+1000" gtr "0x99" echo greater
if 12-1 gtr 3 echo greater
if +1000 gtr 0x99 echo greater
Только последний IF выше выполняется в числовом виде и эхо-сигнал больше... но ни одна из сторон операции сравнения не состоит полностью из цифр.