modmii.github.io/Support/subscripts/CompareVersions.bat

21 lines
768 B
Batchfile

::Usage: CompareVersions.bat "1" "2"
::%CompareResult% answer refers to 1st number and results can be: GTR, LSS, EQU, Invalid
set CompareResult=Invalid
if "%~1"=="" goto:fin
if "%~2"=="" goto:fin
echo("%~1" | findstr /R /C:"\"[0-9.]*\"" >nul && set CompareResult=Valid || set CompareResult=Invalid
if /i "%CompareResult%" EQU "Invalid" goto:fin
echo("%~2" | findstr /R /C:"\"[0-9.]*\"" >nul && set CompareResult=Valid || set CompareResult=Invalid
if /i "%CompareResult%" EQU "Invalid" goto:fin
set CompareResult=Invalid
@powershell -command "&{exit(([version]$args[0]).CompareTo([version]$args[1]))}" "%~1.0" "%~2.0"
@IF ERRORLEVEL 1 (set CompareResult=GTR) ELSE (
IF ERRORLEVEL 0 (set CompareResult=EQU) ELSE set CompareResult=LSS)
:fin
::echo %CompareResult%