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

使用批处理脚本提取HTML中<a>标签的href值与文本内容

Batch脚本提取HTML链接的href值与标签文本

可行代码

@echo off
setlocal enabledelayedexpansion

:: 遍历findstr筛选出的目标行
for /f "delims=" %%a in ('findstr /r "<a href=\"\"\"\">\"\"</a>" file.html') do (
    set "line=%%a"
    :: 将所有双引号替换为竖线,消除引号对for/f的干扰
    set "line=!line:"=|!"
    :: 拆分处理后的行,提取目标内容
    for /f "tokens=3,5 delims=<>=|" %%b in ("!line!") do (
        echo URL: %%b
        echo 文本: %%c
        echo ------------------------
    )
)

endlocal

详细解释

核心思路

通过字符串替换消除引号干扰,再用for /f的分隔符拆分功能提取目标内容,完全避开正则解析的复杂操作。

逐行拆解

  1. @echo off:关闭命令回显,让输出更干净。
  2. setlocal enabledelayedexpansion:启用延迟变量扩展,确保在for循环内部修改和读取变量时能获取实时值。
  3. 外层for /f循环:
    • "delims=":保留整行内容,防止默认的空格/制表符截断行数据。
    • findstr /r "<a href=\"\"\"\">\"\"</a>" file.html:用findstr的简单正则匹配目标行,这里的\"\"\"是Batch中在单引号命令里转义双引号的写法,确保精准匹配<a href="...">...</a>格式的行。
  4. set "line=%%a":将当前遍历到的行存入变量line。
  5. set "line=!line:"=|!":把行内所有双引号替换为竖线|——这是解决你引号报错问题的关键,将特殊转义字符转为普通分隔符,避免for /f解析时出错。
  6. 内层for /f循环:
    • "tokens=3,5 delims=<>=|":指定<、>、=、|为分隔符,提取拆分后的第3、5个片段。
      • 替换后的行格式示例:<a href=|https://example.com|>|示例链接|</a>,拆分后第3段是href值,第5段是标签文本。
    • 最后输出提取结果,用分隔线区分每条记录。

适配调整

如果HTML行存在格式差异(比如href和=之间有空格),只需将空格加入分隔符即可:delims=<>=| ;若行内有额外属性,需根据实际结构调整tokens的序号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:10:46