Полагаю, вы ищете функции.
Вы можете вставить это в пакетный файл и вызвать его через call :myFunction
, но, поскольку пакетные функции не возвращают значений, вам нужно сделать это явно, назначивприведите к переменной.
В вашем случае ваш код может выглядеть следующим образом
@echo off
setlocal enableextensions enabledelayedexpansion
call :myFunction %1 %2 %3
echo !result!
exit /b
:myFunction
set file=%1
set area=[%2]
set key=%3
set currarea=
for /f "delims=" %%a in (!file!) do (
set ln=%%a
if "x!ln:~0,1!"=="x[" (
set currarea=!ln!
) else (
for /f "tokens=1,2 delims==" %%b in ("!ln!") do (
set currkey=%%b
set currval=%%c
if "x!area!"=="x!currarea!" if "x!key!"=="x!currkey!" (
set result=!currval!
)
)
)
)
exit /b
Возможно, это не совсем подходит, поскольку требуется только один результат, но я надеюсь, что он указывает в правильном направлении.