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

如何通过批处理程序读取XML文件并提取指定游戏的ESRB评级

批处理读取XML提取ESRB评级方案

没问题,我来帮你搞定这个批处理读取XML提取ESRB评级的需求!因为批处理本身对XML的原生支持很有限,咱们就用字符串匹配+文本处理的方式来实现,下面是具体的方案:

解决方案代码

假设你的XML结构大概是这样的(如果实际结构不同,后面可以调整匹配逻辑):

T (Teen)

对应的批处理代码如下:

@echo off
setlocal enabledelayedexpansion

:: 设置目标游戏名称
set "targetGame=007 - Everything or Nothing (USA)"
:: 设置你的XML文件路径
set "xmlFile=your_games.xml"

:: 初始化评级变量
set "esrbRating="

:: 找到包含目标游戏标题的行并获取行号
for /f "tokens=1 delims=:" %%n in ('findstr /n /C:"%targetGame%" "%xmlFile%"') do (
    :: 根据XML结构调整ESRB行的偏移量(这里假设ESRB在游戏行的下一行)
    set /a esrbLine=%%n + 1
    :: 读取ESRB所在行的内容
    for /f "skip=!esrbLine! tokens=*" %%b in ('type "%xmlFile%"') do (
        :: 提取<esrb>标签内的内容
        set "temp=%%b"
        set "temp=!temp:*<esrb>=!"
        set "temp=!temp:</esrb>=!"
        :: 去除内容前后的空格
        for /f "tokens=*" %%c in ("!temp!") do set "esrbRating=%%c"
        :: 找到后跳出循环,避免处理多余行
        goto :done
    )
)

:done
:: 输出结果或使用变量
if defined esrbRating (
    echo 目标游戏的ESRB评级:*%esrbRating%*
    :: 这里可以直接用%esrbRating%变量做后续操作
) else (
    echo 未找到目标游戏的ESRB评级信息
)

endlocal

代码说明

  • 启用enabledelayedexpansion(延迟扩展)是为了在循环内部动态修改变量值,这是批处理循环里处理变量的常用技巧。
  • findstr /n用来给每行添加行号,方便定位目标游戏对应的ESRB行位置,你需要根据自己XML的实际结构调整esrbLine的偏移量(比如如果ESRB和游戏标题在同一行,就把+1去掉)。
  • 通过两次字符串替换!temp:*<esrb>=!和!temp:</esrb>=!去掉标签,只保留中间的评级内容,最后用for /f "tokens=*"去除内容前后的空格,得到干净的评级值。
  • 如果你的XML结构更复杂(比如标签嵌套更深、属性位置不同),可以调整findstr的匹配参数或者字符串替换的逻辑来适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:57:50