Хоть это и глупо — проверять значение, заданное непосредственно в самом пакетном файле (я лично не вижу в этом ни малейшего смысла — в отличие от проверки интерактивно вводимых данных), но — пожалуйста:
Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion
>nul 2>&1 set /a iFirstVar = 12345 || (
echo Need only digital value content for [iFirstVar] environment variable.
exit /b 1
)
set iSecondVar=
set /p "iSecondVar=Enter digital value: "
if defined iFirstVar (
echo Environment variable [iFirstVar] = [%iFirstVar%].
if defined iSecondVar (
echo Environment variable [iSecondVar] = [%iSecondVar%].
echo %iSecondVar%| >nul 2>&1 findstr.exe /r /c:"^[0-9]*$" && (
set /a iSumm = %iFirstVar% + %iSecondVar%
echo Summ of environment variables [iFirstVar] and [iSecondVar] = [!iSumm!].
) || (
echo Need only digital value content for [iSecondVar] environment variable.
exit /b 4
)
) else (
echo Environment variable [iSecondVar] not defined.
exit /b 3
)
) else (
echo Environment variable [iFirstVar] not defined.
exit /b 2
)
endlocal
exit /b 0
Можете попробовать задать для переменной окружения iFirstVar вместо «12345» нечисловое значение, можете попробовать ввести для переменной окружения iSecondVar нечисловое значение и посмотреть, что будет.