来自 html 文件的批处理文件正则表达式 ID

问题描述 投票:0回答:1

我总是在 list.txt 文件中手动定义 ID 列表并创建一个长字符串。 我想创建相同的长字符串,但要解析 html 文件并从内部链接导出 ID。

注意:list.txt 或 list.html 中的 ID 数量可以不同

//列表.txt

450814997
463939057

//列表.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>

预期输出:

c:\server\463939057;c:\server\463939057;
html batch-file
1个回答
0
投票
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION 
set "my_directory=c:\server"
set "list="
for /F "tokens=3delims=?" %%E IN ('Type "q77047266.txt"') do (
 SET "token3=%%E"
 IF DEFINED token3 set "list=!list!%my_directory%\!token3:~3,-4!;"
)
echo %list%

GOTO :EOF

我使用了一个名为

q77047266.txt
的文件,其中包含用于测试的 HTML 数据。

您没有指定是否应从该行中第一次或第二次出现的位置中提取所需的字符串。我选择了最后一个。

使用

?
作为分隔符,抓取第二个
?
(token3)之后的部分行,然后将结果附加到
list
,带有装饰,但省略前3个字符(id=)和后3个字符()

© www.soinside.com 2019 - 2024. All rights reserved.