我总是在 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;
@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个字符()