BrickMan
BrickMan

Reputation: 37

Batch File Not Returning Expected Text

I am making a batch file that looks like this:

set /a "number1"="%1"
set /a "number2"="%2"
if "%number1%" GTR "%number2%" echo %number1% Is Greater Than %number2%. & exit /b
if "%number1%" LSS "%number2%" echo %number1% Is Less Than %number2%. & exit /b
if "%number1%" EQU "%number2%" echo %number1% Is Equal To %number2%. & exit /b

When I ran it from cmd like this:

Calc.bat 4 10

It said that 4 was greater than 10. how can I fix it and why does this happen?

Upvotes: 0

Views: 35

Answers (1)

paxdiablo
paxdiablo

Reputation: 881553

You should get rid of the vast majority of all those " (double quote) characters, they're making the comparison a lexicographical one rather than a numeric one:

@echo off
set /a "number1=%1"
set /a "number2=%2"
if %number1% GTR %number2% echo %number1% Is Greater Than %number2%. & exit /b
if %number1% LSS %number2% echo %number1% Is Less Than %number2%. & exit /b
if %number1% EQU %number2% echo %number1% Is Equal To %number2%. & exit /b

Result:

C:\Users\pax> testprog.cmd 4 10
4 Is Less Than 10.

Upvotes: 3

Related Questions