Пакетный скрипт - Ищите строку "Имя", возвращающий идентификатор, соответствующий строке

У меня есть скрипт, который ищет строку "SiteName" в файле. Что я хочу сделать, это если строка = "SiteName" вернуть соответствующий идентификационный номер.

@echo off
set SiteID
%SiteID% = findstr /s /b "SiteName" %WinDir%\System32\Inetsrv\Config\applicationHost.Config

У меня в файле есть это <site name="SiteName" id="3" serverAutoStart="true"> Я хочу сохранить идентификатор в переменной%SiteID%.

1 ответ

Решение
FOR /f "usebackqtokens=1-3delims=<=> " %%a IN ("%filename1%") DO (
 if "%%a"=="site" if "%%b"=="name" set siteid=%%~c
)
echo %siteid%

Будет искать в имени файла строку, которая структурирована как

разделителисайтаразделителиименразделители"обязательные данные"все

где разделителями являются любые из <,=,> или пространство

usebackq разрешает заключать в кавычки имя файла (которое может быть константой при назначении) (обязательно, если оно содержит разделители), и ~ удаляет любые кавычки вокруг третьего токена (токен является строкой между разделителями-строками)

Другие вопросы по тегам