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

如何用Batch脚本从JSON文本提取paper-1.19.2-x的最高x值

提取PaperMC 1.19.2最高构建号的Batch脚本方案

问题根源分析

  • 第一段脚本输出paper-1.19.2-.jar,是因为构建号提取逻辑错误,未正确匹配到paper-1.19.2-后的数字内容,导致截取结果为空,大概率是分割符选择不当或字符串截取位置错误。
  • 第二段输出时间片段05T23:08:28,是因为脚本的匹配规则过于宽泛,误将JSON中的时间戳字段当成了构建号,没有精准定位目标文件名的数字部分。

正确的Batch脚本实现

以下是基于PaperMC构建JSON结构编写的精准提取脚本:

@echo off
setlocal enabledelayedexpansion

:: 初始化最高构建号为0
set "highest_build=0"

:: 遍历builds.txt中包含目标文件名的行
for /f "tokens=2 delims=-,\" %%a in ('type builds.txt ^| findstr "paper-1.19.2-"') do (
    :: 提取构建号并去除.jar后缀
    set "current_build=%%a"
    if "!current_build:~-4!"==".jar" set "current_build=!current_build:~0,-4!"
    
    :: 比较并更新最高构建号
    if !current_build! gtr !highest_build! set "highest_build=!current_build!"
)

:: 输出结果
echo 最高构建号: !highest_build!
echo 对应文件名: paper-1.19.2-!highest_build!.jar
endlocal

脚本关键逻辑说明

  • enabledelayedexpansion:启用延迟变量扩展,保证循环内变量的实时更新生效。
  • findstr "paper-1.19.2-":精准过滤出包含目标文件名的行,避免误匹配时间等无关字段。
  • tokens=2 delims=-,\":以-、,、"为分隔符,提取paper-1.19.2-后的内容,处理可能带有的.jar后缀。
  • 数字大小比较:循环遍历所有构建号,动态更新最大值。

无文件依赖的替代方案

如果不需要先保存JSON文件,可以直接通过curl请求API并实时解析,减少中间步骤:

@echo off
setlocal enabledelayedexpansion

set "highest_build=0"

for /f "tokens=2 delims=:,\" %%a in ('curl -s api.papermc.io/v2/projects/paper/versions/1.19.2/builds ^| findstr "\"build\""') do (
    set "current_build=%%a"
    if !current_build! gtr !highest_build! set "highest_build=!current_build!"
)

echo 最高构建号: !highest_build!
echo 对应下载路径格式: api.papermc.io/v2/projects/paper/versions/1.19.2/builds/!highest_build!/downloads/paper-1.19.2-!highest_build!.jar
endlocal

这个方案直接从PaperMC的API接口提取"build"字段的数字,彻底避免文件操作和误匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:01:11