Да, две переменные типа Integer действительно могут использоваться в сравнениях, если они расширены. Заключение в кавычки целых чисел для сравнения - это одно из средств защиты от недопустимых переменных, другое - использование отложенного расширения (включено)
Здесь есть отличное объяснение проблем синтаксиса целочисленного сравнения
Приведенный ниже MathCro может использоваться для назначения и изменения переменных, если вам это интересно. В случае попытки оперировать 1-м аргументом с необъявленной переменной, изменение не произойдет.
@Echo Off
%= Establish Macros =%
setlocal DisableDelayedExpansion
(set LF=^
%= Newline =%)
Set ^"\n=^^^%LF%%LF%^%LF%%LF%^^"
(Set "Operate=Endlocal ^& Set /A ""%%G%%H=%%I"""
%= 'Tunnels' variable value, Allows Definition of Arithmetic within Macro =%)
Set @M=for /L %%n in (1 1 2) do if %%n==2 (%\n%
for /F "tokens=1,2,3 delims=, " %%G in ("!argv!") do (%\n%
%Operate%%\n%
%= Display value of variable. Optional. If not syntax is required to constrain expansion =%
If Not "!%%G!"=="" Echo(%%G: !%%G!%\n%
) %\n%
) ELSE setlocal enableDelayedExpansion ^& set argv=,
%= script main body =%
%= Facilitate modification of variables within codeblocks. =%
Setlocal EnableDelayedExpansion
REM macro can be used to define as well as modify variables
REM output of macro can be redirected to nul (hidden) like so:
REM (%@M% hp + 50)>nul
%@M% hp + 50
(%@M% heal + 40)>nul
%@M% hp - 30
%@M% hp + 25
%@M% hp * 3
%@M% hp / 2
%@M% hp + heal
%@M% heal - 10
%@M% hp + heal
%= Demonstrates use of an equation beyond the initial Operator. Spaces and parentheses in equation must be ommited =%
%= Increments variable by a random amount in the range of 10 to 20 =%
For /L %%A in (1,1,50) do (%@M% hp + !random!%%10+10)>nul
Echo(hp: %hp%
For /L %%A in (1,1,50) do IF Not !hp! LSS !heal! (%@M% hp - !random!%%15+10)
pause >nul
Exit /B