Парсинг xml файлов в папке через cmd или любые другие программы которые с этим справятся

Есть множество файлов в папке file1.xml file2.xml ... (все они заканчиваются на одно и тоже), в которых есть

<?xml version="1.0" encoding="utf-8"?>
<properties>
  ...
  <string name="name1">true</string>
  <string name="name2">true</string>
  <string name="name3">false</string>
  ...
</properties>

Нужно пропарсить папку с файлами и в этих файлах заменить строку. Можно использовать регулярные выражения для notepad++ или python плагина для него

<string name="name3">false</string> на <string name="name3">true</string> .

Эта строка есть не во всех файлах. Если не найдено то добавить в самый верх это же значение после <properties>

<string name="name3">true</string> те

<?xml version="1.0" encoding="utf-8"?>
<properties>
  <string name="name3">true</string>
  <string name="name1">true</string>
  <string name="name2">true</string>
</properties>

Как можно это сделать?

Нахождение файлов *.xml я смог организовать. Теперь нужно найти эту строку и изменить или добавить если нет.

cmd:

for /r %~dp0 %%a in (*.xml) do (
    echo %%a
)

Ответы (1 шт):

Автор решения: Максим

Помогли на другом сайте (наверное рекламировать его нельзя). Для данного кода используется утилита sed

@echo off
SetLocal EnableExtensions EnableDelayedExpansion
title %~dp0
cd /d "%~dp0"

for %%a in (*.xml) do (
    findstr /rc:"<bool name=\"spaceToolUsesAmmo\">[a-z]*</bool>" "%%a">nul
    if !errorlevel!==0 (
       %sed% -i "s/<bool\ name=\"spaceToolUsesAmmo\">true<\/bool>/<bool\ name=\"spaceToolUsesAmmo\">false<\/bool>/" "%%a"
    ) else (
        %sed% -i "/<properties>/ a \ \ <bool\ name=\"spaceToolUsesAmmo\">false<\/bool>" "%%a"
    )
)

pause
exit /B
→ Ссылка