读取文本文件中的特定行 - 跳过始终转到最后一行

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

我想读取一个大文本文档中指定行号的两行。但它总是给我文档的最后一行而不是指定的 2 行。

首先我确定行号:

for /f "delims=:" %%f in ('findstr /n /c:"= Boot Option" dump.txt') do set line=%%f
set /A Line1=%line%+4
set /A Line2=%line%+5

我读了这两行:

for /f "skip=%line1%" %%l in (dump.txt) do set Boot1=%%l
for /f "skip=%line2%" %%l in (dump.txt) do set Boot2=%%l
echo %boot1% - %boot2%

我检查了行号,line1 = 33140 和 line2 = 33141,这些是正确的行,但我总是两次获得文档的最后一行(即 33532)。

我还测试了将数字 33140 直接放入 Skip 参数中,但这也失败了。即使在那里设置一个较低的数字,如 25,也会导致文档的最后一行。

batch-file skip
1个回答
0
投票

天哪......它正在工作。

for /f "skip=%line1% tokens=1,2 delims=]" %%a in (dump.txt) do set "Boot1=%%b"&goto nextline
:nextline
for /f "skip=%line2% tokens=1,2 delims=]" %%a in (dump.txt) do set "Boot2=%%b"&goto nextline
:nextline
echo %boot1% - %boot2%
© www.soinside.com 2019 - 2024. All rights reserved.