Следующее чистое пакетное решение должно работать для большинства сценариев. Но есть значения, которые могут привести к сбою или дать неправильный ответ:
@echo off
setlocal
set "ln="
for /f "delims=" %%A in ('findstr /r "DATABASE=.*;" "test.txt"') do set "ln=%%A"
if not defined ln (
echo Value not found
exit /b 1
)
for /f "delims=;=" %%A in ("%ln:*DATABASE=%") do set "val=%%A"
echo Value=%VAL%
Есть способы сделать чистую партию более надежной. Но есть простой инструмент, который обеспечивает очень надежное и простое в использовании решение: REPL.BAT - это гибридная утилита пакетной обработки /JScript, которая выполняет поиск и замену регулярных выражений в stdin и записывает результат в стандартный вывод. Опция A
возвращает только те строки, которые были изменены.
@echo off
set "val="
for /f "delims=" %%A in ('type test.txt^|repl ".*DATABASE=(.*?);.*" $1 a') do set "val=%%A"
echo Value=%VAL%
Отравляющие символы могут привести к сбою последнего решения при выводе значения на экран. Использование отложенного расширения в последнем операторе ECHO заставит его работать с любым допустимым значением переменной среды пакетной обработки.