Парсинг 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