我想读取一个大文本文档中指定行号的两行。但它总是给我文档的最后一行而不是指定的 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,也会导致文档的最后一行。
天哪......它正在工作。
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%