Тема: CMD/BAT: Замена части строки в XML-файле частью строки из INI-файлa
Доброго времени суток, профессионалы! Не нашёл подходящей темы и чтобы не засорять форум другими темами, выбрал эту тему, которая отдалённо имеет отношение к моему обращению.
Прошу вашей помощи, так как сам не смог разобраться со своей проблемой.
В одной и той же папке на компьютере находятся два файла listing.xml и teknogods.ini
Файл teknogods.ini выглядит так:
[Settings] Name=NICKNAME ID=41bcef57 FOV=90 [Network] NetworkInterface=255 NetworkInterfaceList=[0 = 192.168.0.101; 255 (default) = ANY IP]
А файл listing.xml выглядит так:
<?xml version="1.0" standalone="yes"?> <DocumentElement> <ProcData> <v_path>iw5mp.exe</v_path> <v_nick>????????</v_nick> </ProcData> </DocumentElement>
Нужен батник (скрипт), который пропишет в строке <v_nick>????????</v_nick> (в данном варианте на нужном месте размещены знаки вопроса) файла listing.xml значение после знака = (слово NICKNAME) из строки Name=NICKNAME файла teknogods.ini.
Другими словами пропишется в строке и будет выглядеть так:
<?xml version="1.0" standalone="yes"?> <DocumentElement> <ProcData> <v_path>iw5mp.exe</v_path> <v_nick>NICKNAME</v_nick> </ProcData> </DocumentElement>
Код пакетного файла:
@echo off
set "ini=teknogods.ini"
set "xml=listing.xml"
for /f %%i in ('^<"%xml%" find/c /v ""') do (
for /f "tokens=2 delims==" %%j in ('findstr/bilc:"Name=" "%ini%"') do <"%xml%">.tmp (
for /l %%k in (1 1 %%i) do (
set "x="& set/p x=& if defined x (
cmd/v/c "if "!x!" equ "!x:*^<v_nick^>=!" (echo.!x!) else (echo ^<v_nick^>%%j^</v_nick^>)"
) else echo.
)
)
)
>nul move .tmp "%xml%"
exit/b
Заранее благодарен.
Благодарности принимаю в виде написания отзыва после нажатия на кнопку "+" в меню "Репутация".