Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нашел свою ошибку. И она не очевидна для новичка.
Код: Выделить весь код
@echo off

setlocal enabledelayedexpansion

set conf=Config.xml
set temp=temp.xml
set kwd="NewKeyWord1"

rem проверяю на наличие временного файла и если он есть - удаляю
if exist %temp% del /q /f %temp%


rem ищу необходимое словосочетание
for /f "usebackq delims=^; tokens=2" %%a in (`findstr /rc:"KeyWord1"^=^.*^; %conf%`) do (
  set var=%%a

rem из словосочетания забираю необходимый для замены ключ
  for /f "usebackq" %%s in (`cmd /v /c "echo !var:KeyWord1=!"`) do (
    set kwrd=%%s
  )
)
set kwrd=%kwrd:~1%

rem цикл записи всех строк во временный файл
for /f "tokens=*" %%q in (%conf%) do (
  set line=%%q

rem записываю все строки во временный файл и при нахождении ключа kwrd в какой-либо строке 
rem меняет его на ключ kwd
  echo !line:%kwrd%=%kwd%!>>%temp%
)

rem перезаписываем временный файл в конфигурационный файл
move /y %temp% %conf%

endlocal
exit /b
Вся проблема заключалась в том что переменная %kwrd% имела в начале своего значение символ равенства. В связи с чем необходимо было просто удалить данный символ строкой set kwrd=%kwrd:~1%.

Отправлено: 16:29, 30-04-2021 | #17