我有一个文本文件,我必须读取第21行并将其设置为变量。我正在使用下面的内容。
Set Source="C\Users\file.txt"
for /f "Tokens=* delims=" %%G in ('findstr /n "^" %Source%') do (
if %%G equ 21 (
set Variable="%%H"
)
)
它不起作用。请帮助。
答案 0 :(得分:2)
鉴于第21行不是空的,你可以这样做:
set "SOURCE=C\Users\file.txt"
for /F usebackq^ skip^=20^ delims^=^ eol^= %%L in ("%SOURCE%") do (
if not defined LINE set "LINE=%%L"
)
echo(Line 21 contains "%LINE%".
如果第21行可能为空,则可以改用:
set "SOURCE=C\Users\file.txt"
for /F "usebackq skip=20 delims=" %%L in ('findstr /N "^" "%SOURCE%"') do (
set "LINE=%%L"
goto :CONTINUE
)
:CONTINUE
set "LINE=%LINE:*:=%"
echo(Line 21 contains "%LINE%".
这是另一种方法,使用input redirection <
:
set "SOURCE=C\Users\file.txt"
< "%SOURCE%" (
for /L %%I in (1,1,20) do set /P LINE=""
set "LINE="
set /P LINE=""
)
echo(Line 21 contains "%LINE%".
答案 1 :(得分:0)
for /f "Tokens=1* delims=:" %%G in ('findstr /n "^" %Source%') do if %%G equ 21 set Variable=%%H
echo.%Variable%
这有我所需的输出。
答案 2 :(得分:-1)
使用 SETX 及其 / A 选项。有关详细信息,请参阅 SETX /?。
好:
for /f "tokens=*" %V in ('%SystemRoot%\System32\findstr.exe /n /r /c:".*" <FILE_PATH> ^| %SystemRoot%\System32\findstr /b /l /c:"21:"') do set LINE=%V
set LINE=%LINE:~3%
如果在脚本中使用,%V需要更改为%% V.