Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Замена значения между <iScale> </iScale> в xml файле (http://forum.oszone.net/showthread.php?t=353521)

Mat_y 05-05-2023 14:57 3008582

Замена значения между <iScale> </iScale> в xml файле
 
Добрый день!
Помогите создать батник для замены значений с троке <iScale> </iScale> в xml файле, назовем его test.xml

Подробнее: есть xml файлик вида:
Код:

<rt>
        <det>
                <gpuMemory> 5980 </gpuMemory>
                <cpuCores> 4 </cpuCores>
                <ram> 16325 </ram>
        </det>
        <pref>
                <iScale> 1.00 </iScale>
                <vScale> 1.70 </vScale>
        </pref>
</rt>

Задача состоит из 2 пунктов:
1. Найти в файлике строку <iScale> 1.00 </iScale> и заменить значение в ней на <iScale> 1.54 </iScale>, по сути между <iScale> </iScale> может быть любое числовое значение вида x.xx: <iScale> x.xx </iScale> и мы его изначально не знаем.
2. Если параметра <iScale> </iScale> в файлике нет, то надо его добавить между <pref> </pref>

Сам задачу решить не смог, уповаю на вашу помощь. Форум почитал пару дней, но похожего не смог найти.
Спасибо заранее!

DJ Mogarych 05-05-2023 17:44 3008587

Цитата:

Цитата Mat_y
похожего не смог найти »

Да ну?
http://forum.oszone.net/forumdisplay...ilter_by=title

Powershell
Код:

$file = 'C:\temp\test.xml'

[xml]$xml = gc $file

if ($xml.rt.pref.iScale -eq " 1.00 ") {
    $xml.rt.pref.iScale = " 1.54 "
}

if (-not $xml.rt.pref.iScale) {
    $iScale = $xml.CreateElement("iScale")
    $iScale.InnerText = " 1.54 "
    $xml.rt.pref.AppendChild($iScale)
}

$xml.Save($file)



Время: 23:55.

Время: 23:55.
© OSzone.net 2001-