bat文件检查比较两个版本大小

本文详细介绍了如何使用批处理脚本比较不同版本号格式的字符串,通过调用testVersions函数实现版本号大小关系的判断。核心内容包括解析版本节点和字母节点,以及错误码返回结果的应用。

@echo off
setlocal
if not 1 == 1 (
echo 1
exit /b 2
) else (
echo 2
exit /b 2
)
call :testVersions 2.1 1.9
call :testVersions “2,1” 1-9
call :testVersions 1.9 2.1
call :testVersions 1.13 1.4
call :testVersions 1.4 1.13
call :testVersions 1.3.4 1.3.4
call :testVersions 1.3.4 1.3.5
call :testVersions 1.3.5 1.3.4
call :testVersions 1.3.5 1.3.5.1
call :testVersions 1.3.5.1 1.3.5
call :testVersions 1.3b 1.3
call :testVersions 1.3 1.3b
call :testVersions 1.10a 1.9
call :testVersions 1.9 1.10a
call :testVersions 1.9a 1.9b
call :testVersions 1.9b 1.9a
call :testVersions 1.9a 1.9A
exit /b

:testVersions version1 version2
call :compareVersions %1 %2
if %errorlevel% == 1 set “result=greater than”
if %errorlevel% == -1 set “result=less than”
if %errorlevel% == 0 set “result=equal to”
echo %~1 is %result% %~2
exit /b

:compareVersions version1 version2
::
:: Compares two version numbers and returns the result in the ERRORLEVEL
::
:: Returns 1 if version1 > version2
:: 0 if version1 = version2
:: -1 if version1 < version2
::
:: The nodes must be delimited by . or , or -
::
:: Nodes are normally strictly numeric, without a 0 prefix. A letter suffix
:: is treated as a separate node
::
setlocal enableDelayedExpansion
set “v1=%~1”
set “v2=%~2”
call :divideLetters v1
call :divideLetters v2
:loop
call :parseNode “%v1%” n1 v1
call :parseNode “%v2%” n2 v2
if %n1% gtr %n2% exit /b 1
if %n1% lss %n2% exit /b -1
if not defined v1 if not defined v2 exit /b 0
if not defined v1 exit /b -1
if not defined v2 exit /b 1
goto :loop

:parseNode version nodeVar remainderVar
for /f “tokens=1* delims=.,-” %%A in (“%~1”) do (
set “%~2=%%A”
set “%~3=%%B”
)
exit /b

:divideLetters versionVar
for %%C in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set “%1=!%1:%%C=.%%C!”
exit /b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值