You need to enable JavaScript to run this app. 如何用Windows批处理提取区间字符串:从DASH XML的Representation标签提取UUID值
优惠活动
大模型
产品
解决方案
定价
更多

如何用Windows批处理提取区间字符串:从DASH XML的Representation标签提取UUID值

批处理提取DASH XML中指定UUID的实现

需求说明

现有一段经HTML实体转义的DASH XML片段,原文结构还原后为:

<AdaptationSet maxHeight="576" maxWidth="1024" mimeType="video/mp4" id="0" segmentAlignment="true" startWithSAP="1">
  <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" cenc:default_KID="bcf950eb-a062-5b0d-b1f2-fed53f20ba10">
    <cenc:pssh>AAAATHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACwiJGFlNWU5NTk4LWU5ODktNWM1Ny1iOTk2LTg3OTA4NWIyYzUxNUjj3JWbBg==</cenc:pssh>
  </ContentProtection>
  <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="bcf950eb-a062-5b0d-b1f2-fed53f20ba10" />
  <SegmentTemplate duration="6000" initialization="$RepresentationID$/video/init.mp4" media="$RepresentationID$_184201/segment_$Number$.m4s" startNumber="0" timescale="1000" />
  <Representation bandwidth="247600" codecs="avc1.64001F" height="144" width="256" id="ae5e9598-e989-5c57-b996-879085b2c515-0_video_frag_auto.idx~video_frag_auto~481" scanType="progressive" />
</AdaptationSet>

注意:原文中所有引号均为HTML实体转义格式&quot;,首行AdaptationSet标签自带id="0"属性,不能被误提取。

提取目标:

  • 仅定位最后一行<Representation>标签内的id属性值
  • 截取该id值前半段的UUID内容,最终提取结果为ae5e9598-e989-5c57-b996-879085b2c515,并存入批处理变量

批处理原生实现方案

完全依赖批处理内置命令即可完成提取,不需要额外安装第三方工具,核心逻辑分三步:

  1. 逐行扫描XML内容,直接筛选出包含<Representation>标签的行,从根源上避开首行id="0"的AdaptationSet标签干扰
  2. 从匹配到的Representation行中,提取转义格式的id属性完整值
  3. 按照id值的固定结构(UUID后拼接-0_后缀)分割字符串,取出纯UUID部分存入变量

示例代码

@echo off
setlocal enabledelayedexpansion

:: 替换为实际存储原始XML内容的变量,此处以xml_source代指
set "xml_source=你的原始XML内容"
set "final_uuid="

:: 逐行匹配Representation标签行
for /f "delims=" %%line in ("%xml_source%") do (
    echo %%line | findstr /c:"<Representation" >nul && (
        :: 提取该行中转义格式的id属性完整值
        for /f "tokens=2 delims=;&quot; " %%idval in ('echo %%line ^| findstr /o "id=&quot;"') do (
            :: 按固定分隔符"-0_"切割,取前半段UUID
            for /f "tokens=1 delims=-0_" %%u in ("%%idval") do (
                set "final_uuid=%%u"
            )
        )
    )
)

:: 提取结果存入变量final_uuid,可直接调用
echo 提取结果:!final_uuid!

关键说明

  • 锚定<Representation>标签做行筛选,从根本上不会匹配到上层AdaptationSet的id="0"属性,无混淆风险
  • 分割规则匹配示例中id值的固定结构:UUID后固定拼接-0_开头的资源后缀,取该分隔符前的内容即可,不会误伤UUID本身自带的连字符
  • 适配原文中引号为&quot;转义格式的场景,不需要提前做HTML实体转义还原

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 13:27:03