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

如何用批处理从HTML提取Steam创意工坊ID并生成指定格式字符串

需求与解决方案

原本通过手动维护list.txt中的ID列表,再用批处理脚本list.bat生成c:\server\ID;拼接的长字符串。现需改为解析list.html,从其中的Steam创意工坊链接提取ID,生成相同格式的字符串。

原实现参考

list.txt内容

450814997
463939057

原list.bat脚本

set "my_directory=c:\server"
set "list="
for /F "tokens=*" %%A IN ('Type "list.txt"') do (
    set "list=!list!%my_directory%\%%A;"
)
echo %list%

list.html内容

<body>
    <div class="mod-list">
      <table>
        <tr data-type="ModContainer">
          <td data-type="DisplayName">CBA_A3</td>
          <td>
            <span class="from-steam">Steam</span>
          </td>
          <td>
            <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=450814997" data-type="Link">https://steamcommunity.com/sharedfiles/filedetails/?id=450814997</a>
          </td>
        </tr>
        <tr data-type="ModContainer">
          <td data-type="DisplayName">ace</td>
          <td>
            <span class="from-steam">Steam</span>
          </td>
          <td>
            <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=463939057" data-type="Link">https://steamcommunity.com/sharedfiles/filedetails/?id=463939057</a>
          </td>
        </tr>
      </table>
    </div>
    <div class="dlc-list">
      <table />
    </div>
    <div class="footer">
      <span>Created by Arma 3 Launcher by Bohemia Interactive.</span>
    </div>
  </body>

修改后的批处理脚本

@echo off
setlocal enabledelayedexpansion
set "my_directory=c:\server"
set "list="

for /F "tokens=* delims=" %%L in (list.html) do (
    set "line=%%L"
    :: 匹配包含?id=的行,提取后面的数字ID
    echo !line! | findstr /i "id=" >nul
    if not errorlevel 1 (
        set "id_part=!line:*?id=!"
        for /F "tokens=1 delims=&\" %%I in ("!id_part!") do (
            set "list=!list!!my_directory!\%%I;"
        )
    )
)

echo !list!
endlocal

脚本说明

  1. 启用延迟扩展:setlocal enabledelayedexpansion,确保循环中变量修改能实时生效。
  2. 遍历HTML每一行:for /F读取list.html的每一行内容。
  3. 筛选含ID的行:用findstr检查行中是否包含id=,只处理这类行。
  4. 提取ID:通过字符串替换!line:*?id=!截取?id=之后的内容,再用for /F以&或\为分隔符取第一部分,得到纯数字ID。
  5. 拼接字符串:将my_directory\ID;追加到list变量中,最后输出结果。

预期输出

c:\server\450814997;c:\server\463939057;

内容的提问来源于stack exchange,提问作者Ing. Michal Hudak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:37:32