Постановка задачи: Путь\файл.cfg\Папка\файл.bat
В батнике указываем только имя файл.cfg
Код:
@Echo OFF
Set "cfgIn0=tra la la.cfg"
Set Rep="Dreamcast.Region=333" "Dreamcast.Broadcast=444" "Dreamcast.RTC=5552127595098" "DefaultImage=image.gdi" "Dynarec.Enabled=0"
Set "cfgIn=%~dp0"
FOR /F "usebackq delims=" %%j IN ('%cfgIn:~0,-1%') DO Set "cfgIn=%%~dpj%cfgIn0%"
If Not Exist "%cfgIn%" (
Echo:
Echo ????? File %cfgIn% not found !!!!!
Echo:
pause
GoTo :Eof
)
Copy "%cfgIn%" "%cfgIn%.tmp" >nul
>"%cfgIn%" (FOR /F "usebackq tokens=*" %%a IN ("%cfgIn%.tmp") DO Call :Rezult "%%a" %Rep%)
rem Del "%cfgIn%.tmp"
GoTo :Eof
:Rezult
Set "InStr=%~1"
FOR /F "usebackq eol==" %%i IN ('%InStr%') DO Set "Par1=%%i"
:Begin
FOR /F "usebackq eol==" %%j IN ('%~2') DO Set "Par2=%%j"
If /I "%Par1%"=="%Par2%" Set "InStr=%~2" &GoTo :End
Shift
If Not "%~2"=="" GoTo :Begin
:End
Echo %InStr%
GoTo :Eof
Аналогично второй вариант. Если в первом варианте батник делает копию исходного файла с именем файл.cfg.tmp, который при желании можно оставить
rem Del "%cfgIn%.tmp", а без желания - удалить
Del "%cfgIn%.tmp", то второй вариант делает то же, но без создания промежуточного файла.
"на ~2 секунды запускается консоль cmd" - на форуме сто раз обсуждалось как этого избежать, не вижу смысла искать.
"насчёт удаления пустых строк" - моё дело предупредить, это особенность работы батника, и не возьмусь в рамках CMD этого избежать.
"после манипуляций, скрипт перестал работать." - без комментариев, я бы предложил Вам описать, что при этом происходит, выдаются ли какие-либо сообщения. А так - нет мыслей. У меня в указанной постановке работает