читать следующую строку после совпавшей строки и присваивать значение переменной - PullRequest
1 голос
/ 22 апреля 2019

Как часть задачи, над которой я работаю, мне нужно извлечь «ID» определенного ресурса (из файла .txt) и назначить его переменной.

Resource:          Logging
ID:                7BE-3F19-F441-AA26
NodeID:                   
Description:       Logging
Version:           0.5.11
Revision:          1

Мне удалось найти «Ресурс» в файле .txt

SETLOCAL EnableDelayedExpansion
@echo off

SET RESOURCE_NAME="Logging"
SET LOGFILE="C:\Users\Administrator\Desktop\batlog.txt"

FOR /F "tokens=* %%a IN ('findstr /c:"%RESOURCE_NAME%" %LOGFILE%') DO echo %%a

Тем не менее я не могу понять, как сопоставить следующую строку, извлечь значение «ID»и назначить его переменной.Любая помощь будет оценена.Спасибо!

1 Ответ

1 голос
/ 23 апреля 2019

С вашей фильтрацией кода на Logging вы не можете видеть любые другие строки.

  • Прочитать все строки, запомнить последнюю.
  • При выполнении условий сохраните идентификатор и отмените цикл.
  • вам потребуется EnableDelayedExpansion .

:: Q:\Test\2019\04\22\SO_55800720.cmd
@echo off & SETLOCAL EnableDelayedExpansion
SET "LOGFILE=%USERPROFILE%\DeskTop\Batlog.txt"

FOR /F "usebackqtokens=1* delims=: " %%a IN ("%LOGFILE%") DO (
  If /i "!Last!"=="Resource:Logging" if /i "%%a"=="ID" (Set "ID=%%b"&Goto :Found)
  Set "Last=%%a:%%b"
)
Echo Couldn't find ID:
pause
Goto :Eof

:Found
echo Found ID: %ID%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...