I need to check if a parameter that is passed to a Windows Batch file is a numeric value or not. It would be good for the check to also works for variables.
I found a
I use this function instead, it seems to work for me without any issues...
REM == Script variables =============================================
SET "NUMCODE=%1"
SET "NAME=%2"
REM == Main script ==================================================
CALL :Validate "NUMCODE"
IF ERRORLEVEL 1 EXIT /B %ERRORLEVEL%
CALL :Validate "NAME"
IF ERRORLEVEL 1 EXIT /B %ERRORLEVEL%
ECHO Validation Complete and all variables passed validation.
REM == Functions ====================================================
:IsNumeric [string-value] [return-val]
SET "stringVal=%~1"
SET /A numericVal=%stringVal% > nul 2> nul
IF "%stringVal%"=="%numericVal%" (SET "%~2=1") ELSE (SET "%~2=0")
EXIT /B 0
:Validate
SET PASSEDVALIDATION=0
ECHO Validating %~1...
IF "%~1"=="NUMCODE" (
ECHO - Value: %NUMCODE%
IF NOT "%NUMCODE%"=="" SET PASSEDVALIDATION=1
IF "!PASSEDVALIDATION!"=="1" (
CALL :IsNumeric %NUMCODE% RETVAL
SET PASSEDVALIDATION=!RETVAL!
)
IF "!PASSEDVALIDATION!"=="1" (
IF NOT %NUMCODE% GEQ 1 SET PASSEDVALIDATION=0
)
IF "!PASSEDVALIDATION!"=="1" (
IF NOT %NUMCODE% LEQ 526 SET PASSEDVALIDATION=0
)
IF "!PASSEDVALIDATION!"=="0" (
ECHO - The first parameter is invalid, it can not be blank.
ECHO - Valid value is a number from 1 to 526.
ECHO - Leading zeros are not valid.
)
)
IF "%~1"=="NAME" (
ECHO - Value: %NAME%
IF NOT "%NAME%"=="" SET PASSEDVALIDATION=1
IF "!PASSEDVALIDATION!"=="0" (
ECHO - The second parameter is invalid, it can not be blank.
)
)
IF "!PASSEDVALIDATION!"=="0" (
ECHO - Failed validation.
EXIT /B 1
) ELSE (
ECHO - Passed validation.
)
EXIT /B 0
C:\mytestscript.bat 10 MrTest
Validating NUMCODE...
- Value: 10
- Passed validation.
Validating NAME...
- Value: MrTest
- Passed validation.
C:\mytestscript.bat 600
Validating NUMCODE...
- Value: 600
- The first parameter is invalid, it can not be blank.
- Valid value is a number from 1 to 526.
- Leading zeros are not valid.
- Failed validation.
C:\mytestscript.bat 10
Validating NUMCODE...
- Value: 10
- Passed validation.
Validating NAME...
- Value:
- The second parameter is invalid, it can not be blank.
- Failed validation.