CMD: извлечь переменную строку из файла .txt

#batch-file #cmd

#пакетный файл #cmd

Вопрос:

У меня есть myfile.txt содержащий это:

 line 1: keyword=string
line 2
line 3
 

Мне нужна echo эта переменная string через константу keyword .

И эта строка, которая мне нужна, всегда находится в конце 1-й строки.

Пока у меня есть:

 for /f "usebackq tokens=*" %%a in ("myfile.txt") do (
for /f "usebackq tokens=*" %%b in ('findstr /i "keyword=" %%a') do (
echo %%b amp; goto 108
)
)

:108
 

Но я думаю, что findstr этот синтаксис совершенно неправильный.

Пожалуйста, помогите.

Комментарии:

1. Попробуйте for /f "usebackq tokens=1*delims==" %%a in ("myfile.txt") do echo %%b amp; goto 108 , это должно обозначить первую прочитанную строку, присвоив строку перед = (символом delims (разделителями)) токену 1 (первый упомянутый номер токена) %%a ( метапеременной ). Поскольку второй токен «number» является * остатком строки после = присваивается следующей алфавитной метапеременной , %%b

2. На случай, если вы все еще хотите использовать findstr для поиска определенной строки: for /F "tokens=1,* delims==" %%G in ('findstr /i "keyword=" "myfile.txt"') do echo %%H

Ответ №1:

Вы можете сделать это очень просто, как:

 Echo off
SETLOCAL ENABLEDELAYEDEXPANSION
For /F "tokens=*" %%_ IN ('Type "c:mypathmyfile.txt" ^| FIND /I "keyword="
  ) DO (
    SET "Tmp_Line=%%_"
    For /F "Tokens=* delims==" %%A in ('ECHO=!Tmp_Line:*keyword=!') DO (
      echo %%a
      GOTO :108
      Pause
    )
    GOTO :EOF
  )
Goto :EOF