ummm creo que tienes dos detalles en tú scripts
:: el operador de comparación a utilizar seria este NEQ
:: y debes agregar al if /I de manera de q le informes al bat
:: q estas haciendo una comparación
if /I "%preg%" NEQ "5" goto salida
El segundo detalle que veo es el contador fíjate
set /a preg+=1 -- el que tú tienes
::y estes es
set /a preg=%preg%+1 ---el que yo usaría
(creo que con ésto ya solucionas el problema...)
Pero aún así me tomo la molestia de modificar la forma de usar
el contador para optimizar el uso de la memoria.. (no es necesario q lo hagas es solo un ejemplo...
::Ejemplo contador
echo off
:::iguala en la primera linea el contador a cero SIEMPRE xD
set /a preg=0
::y nos saltamos por encima el contador
goto inicio
:contador
set /a preg=%preg%+1
goto :EOF
:inicio
:: lo llamamos para que nos asigne 1 valor a la variable %preg%
call :contador
::
:: aquí comenzaría tú scripts
echo PREGUNTA %preg%
:: aquí finaliza tú scripts
:: ya verificamos la variable %preg% que valor tiene
:: y así hasta que se cumpla la condición y nos vamos al fin
if /I "%preg%" NEQ "4" goto inicio
goto fin
:fin
:: esto por que ??
:: por que es mas fácil reutilizar el contador en cualquier lugar del scripts
:: ejemplo
:: lo igualo a cero y lo llamo otra vez
set /a preg=0
call :contador
echo y sigo escribiendo código xD
echo por que el contador ahora esta en
echo el numero %preg% otra vez
Saludos...