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

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

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


Сообщения: 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
  )
)

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
Вроде бы все правильно (переменные line и kwrd принимают правильные значения, переменная kwrd имеет уникальное значение), но по факту выполнения скрипта строка меняется на line:=KeyWord1=NewKeyWord1.

Намного упрощенный скрипт отработал на ура.
Код: Выделить весь код
@echo off

setlocal enabledelayedexpansion

set kwd=123
set kwrd=321
set var="bla=321"

set v=!var:%kwrd%=%kwd%!
echo %v%

endlocal
pause
exit /b
Где я допускаю ошибку?


Цитата alpap:
правильно, рано или поздно при дальнейших действиях на cmd или его обсуждениях в рамках данной задачи смысл уходит как вода через сито (скромно если, на самом деле быстрее) »
В связи с тем что я на данный момент только изучаю CMD и ее возможности, то на дне этого сита лежит хороший слой глины, который не пропускает смысл и знания. С момента начала работы над данной задачей узнал и, самое главное, понял как правильно строить логику работы с текстовыми файлами, то что использование, хотя бы, PS, не говоря уже о языках программирования (хотя бы Python), будет намного проще и удобнее.

Последний раз редактировалось localmaster, 28-04-2021 в 13:34.


Отправлено: 12:09, 28-04-2021 | #14