Пакетный скрипт - Ищите строку "Имя", возвращающий идентификатор, соответствующий строке
У меня есть скрипт, который ищет строку "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
разрешает заключать в кавычки имя файла (которое может быть константой при назначении) (обязательно, если оно содержит разделители), и ~
удаляет любые кавычки вокруг третьего токена (токен является строкой между разделителями-строками)