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

BAT脚本无法从temp.txt提取最新href链接,请求协助排查

问题:批处理脚本无法从temp.txt提取href链接,且无法获取最新日期的链接

我需要从以下temp.txt文件中提取最新日期对应的href链接(即122/):

<html>
<head><meta name="robots" content="noindex" />
<title>test</title>
</head>
<body>
<h1>test</h1>
</pre><hr/>
<pre><a href="../">../</a>
<a href="100/">100/</a>                                     23-Mar-2022 17:12    -
<a href="111/">111/</a>                                     21-Mar-2023 12:08    -
<a href="112/">112/</a>                                     18-Apr-2023 07:46    -
<a href="113/">113/</a>                                     25-May-2023 21:15    -
----
                                    
<a href="120/">120/</a>                                     11-Dec-2023 10:43    -
<a href="121/">121/</a>                                     30-Jan-2024 07:31    -
**<a href="122/">122/</a>                                     11-Mar-2024 06:00    -**
<a href="93/">93/</a>                                      24-Aug-2021 16:07    -
<a href="94/">94/</a>                                      12-Oct-2021 11:21    -
<a href="95/">95/</a>                                      26-Oct-2021 16:25    -
<a href="97/">97/</a>                                      06-Jan-2022 15:23    -
<a href="98/">98/</a>                                      07-Feb-2022 16:04    -
<a href="99/">99/</a>                                      10-Mar-2022 12:18    -
<a href="json/">json/</a>                                    03-Apr-2024 04:26    -
<a href="linux/">linux/</a>                                   17-Jun-2020 12:06    -
<a href="known-good-version-with-downloads.json">known-good-version-with-downloads.json</a>   01-Apr-2024 07:03  1.39 KB
</pre>
<hr/><address style="font-size:small;">Artifactory/7.49.12 Server at artifactrepository.xxxxxx.net Port 80</address></body></html>

我使用了以下批处理脚本:

@echo off
setlocal enabledelayedexpansion

set "latestHref="
for /f "tokens=*" %%a in ('type temp.txt ^| findstr /i "href="') do (
    set "href=%%a"
    set "href=!href:*href=!"
    for /f "tokens=2 delims==&quot;" %%b in ("!href!") do (
        set "latestHref=%%~b"
    )
)

if defined latestHref (
    echo Latest href link: !latestHref!
) else (
    echo No href links found in the text file.
)

但运行后始终返回No href links found in the text file,预期结果应为122/,请帮忙解决。


问题分析与解决

1. 原脚本失败原因

  • 原脚本第二个for /f循环使用delims==分割字符串,但目标内容中href后是=&quot;(HTML转义引号),分割后tokens=2无法正确提取链接内容;同时字符串中的&等特殊字符会干扰批处理解析,导致循环无法赋值。
  • 原逻辑仅取最后一行的href,未按日期排序筛选最新链接,即使修复提取逻辑,也会得到最后一行的known-good-version-with-downloads.json而非目标的122/。

2. 修复后的脚本

@echo off
setlocal enabledelayedexpansion

:: 初始化变量
set "latestDate="
set "latestHref="

:: 遍历所有包含href的行,排除上级目录链接
for /f "tokens=1,2,3*" %%a in ('type temp.txt ^| findstr /i "href=" ^| findstr /v "../"') do (
    :: 提取href引号内的内容
    set "line=%%a"
    set "href=!line:*href="=!"
    set "href=!href:"=!"
    
    :: 提取日期并转换为可排序的YYYYMMDD格式
    set "day=%%b"
    set "month=!day:~3,3!"
    set "year=!day:~7,4!"
    :: 月份转数字
    if "!month!" equ "Jan" set "month=01"
    if "!month!" equ "Feb" set "month=02"
    if "!month!" equ "Mar" set "month=03"
    if "!month!" equ "Apr" set "month=04"
    if "!month!" equ "May" set "month=05"
    if "!month!" equ "Jun" set "month=06"
    if "!month!" equ "Jul" set "month=07"
    if "!month!" equ "Aug" set "month=08"
    if "!month!" equ "Sep" set "month=09"
    if "!month!" equ "Oct" set "month=10"
    if "!month!" equ "Nov" set "month=11"
    if "!month!" equ "Dec" set "month=12"
    set "dayNum=!day:~0,2!"
    set "sortDate=!year!!month!!dayNum!"
    
    :: 比较日期,保留最新的链接
    if not defined latestDate (
        set "latestDate=!sortDate!"
        set "latestHref=!href!"
    ) else (
        if !sortDate! gtr !latestDate! (
            set "latestDate=!sortDate!"
            set "latestHref=!href!"
        )
    )
)

:: 输出结果
if defined latestHref (
    echo Latest href link: !latestHref!
) else (
    echo No valid href links found.
)
endlocal

3. 脚本说明

  • 用findstr /v "../"排除上级目录的无效链接;
  • 通过字符串截取直接提取href引号内的内容,规避HTML转义字符干扰;
  • 将日期转换为YYYYMMDD格式,通过数值比较确保获取最新日期对应的链接;
  • 遍历过程中持续更新最新日期和对应href,最终输出目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:20:54