#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