Eu tenho um arquivo em lotes que tem várias rotinas. exemplos
:checkFileExists
if not exist %1\%2 (
echo %2 does not exist under %1
set returnValue=FAIL
exit /b 1
)
exit /b 0
:checkPortNumber
if %1 LSS 1024 (
port number should be greater than 1024 and less than 65535
set returnValue=FAIL
exit /b 1
)
... other checks for port number
exit /b 0
... main code..
set returnValue=OK
call :checkFileExists c:\tmp
echo %returnValue%
call :checkFileExists c:\tmp2
echo %returnValue%
call :checkPortNumber 89
echo %returnValue%
c: \ tmp é apenas um exemplo e existe. meu valor de retorno é exibido corretamente como OK. c: \ tmp2 não existe e meu returnValue é exibido corretamente como FAIL.
Espero que checkPortNumber falhe no teste, mas returnValue está definido como OK sempre. Eu tentei com setlocal enableDelayedExpansion também e não. Há algo que eu esteja perdendo?