You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Windows Batch脚本选取文件夹中最高版本对应的ivy.xml文件

Windows Batch 版本筛选实现代码

适用标准x.y.z单数字段版本(如1.0.0、2.0.1)

@echo off
setlocal enabledelayedexpansion

:: 脚本默认放置在所有Program目录的同级根目录(Release目录)下运行
for /d %%p in (Program*) do (
    set "latest_version="
    :: 遍历版本目录按名称正序排列,最后赋值的即为最高版本
    for /d %%v in ("%%p\*") do (
        set "latest_version=%%~nxv"
    )
    :: 输出目标文件路径,可替换为你需要的业务逻辑(如复制、读取解析等)
    echo %%p/!latest_version!/ivy.xml
)

endlocal
pause

适配多数字段版本(如1.10.0 > 1.2.0 场景)

@echo off
setlocal enabledelayedexpansion

for /d %%p in (Program*) do (
    set "latest_ver=0.0.0"
    for /d %%v in ("%%p\*") do (
        set "current_ver=%%~nxv"
        call :ver_compare "!current_ver!" "!latest_ver!"
        if !res! gtr 0 set "latest_ver=!current_ver!"
    )
    echo %%p/!latest_ver!/ivy.xml
)
endlocal
pause
exit /b

:: 版本号比较函数,入参%1=新版本,%2=旧版本,返回res大于0则新版本更大
:ver_compare
set "v1=%~1"
set "v2=%~2"
:: 拆分版本号为三段,可根据你的版本段位数量调整
for /f "tokens=1-3 delims=." %%a in ("%v1%") do (
    set v1_major=%%a
    set v1_minor=%%b
    set v1_patch=%%c
)
for /f "tokens=1-3 delims=." %%a in ("%v2%") do (
    set v2_major=%%a
    set v2_minor=%%b
    set v2_patch=%%c
)
:: 逐段转数字比较
if %v1_major% gtr %v2_major% (set res=1&goto :eof)
if %v1_major% lss %v2_major% (set res=-1&goto :eof)
if %v1_minor% gtr %v2_minor% (set res=1&goto :eof)
if %v1_minor% lss %v2_minor% (set res=-1&goto :eof)
if %v1_patch% gtr %v2_patch% (set res=1&goto :eof)
if %v1_patch% lss %v2_patch% (set res=-1&goto :eof)
set res=0
goto :eof

说明

  • 第一段代码轻量高效,适合版本号每一段都是单个数字的场景
  • 第二段代码通过版本号逐段比较实现,适配更高阶的版本号规则,可根据你实际的版本段位(比如四位版本号1.2.3.4)修改拆分逻辑的tokens参数

内容的提问来源于stack exchange,提问作者Oli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 11:39:03