Показать полную графическую версию : Замена строки в xml с помощью bat
iieciiec
02-01-2013, 19:38
Здравствуйте. У меня такая проблема: мать играет в игру, там жук стреляет шариками, и спасает других жуков) в игре есть попытки, после уровня 8го 9 го ей нехватает тех попыток что у ней есть она просит меня чтоб я зделал их по больше. Я нашол xml файл в нем написано сколько очков, на каком ты уровне сколько у тебя жизней и т.д. Там есть строка:
<lives value="5"/> где 5 число жизней.
Можно зделать bat файл чтоб он менял эту строку, например на <lives value="90"/>?
iieciiec
02-01-2013, 21:43
Tumble Bugs, для чего название нужно?
файл скиньте пожалуйста(я наверное просто не ту версию игры скачал)
iieciiec
06-01-2013, 18:01
Вот файл, находится в папке C:\Users\(имя пользователя)\AppData\Roaming\Wildfire
Foreigner
06-01-2013, 19:01
На PowerShell, имхо, удобней для xml:
$xmlfile = "$env:AppData\Wildfire\1Arcade.xml"
$xml = new-object xml
$xml.load($xmlfile)
$xml.gamestate.player.lives.value = "90"
$xml.save($xmlfile)
Поскольку xml-файл не юникодный, лучше использовать утилиту sed версии 4.2 и выше (правит текст в самом файле с ключем i).
Батник из одной строчки, рядом с xml-файлом.
sed -ri "/lives value/s/[0-9]+/90/" 1Arcade.xml
ps. Утилита и требуемые ей dll должна находиться в путях переменной %Path%, либо рядом с xml-файлом.
iieciiec
07-01-2013, 14:56
Foreigner, Я запустил PowerShell, он как командная строка, вставил туда Ваш скрипт, все сработало, а как зделать чтоб это было как bat файл, нажал скрипт сделал свое дело и выключился?
Ortis, Ваш вариант тоже сроботал. Только с каждым выполнением bat файла в папке появляются файлы: sedEnb3Nr, sediLpzVy, sedKMIvaD и т.д. всегда разные
iieciiec, появление этих файлов говорит о том, что Вы используете устаревшую версию Sed (SuperSed 3.59 или 3.62 или GNU Sed 4.1 или ниже), которые некорректно работают с ключем i.
По поводу запуска скрипта PowerShell, то можно так:
powershell -executionpolicy unrestricted -file Путь_к_ВашФайл.ps1
iieciiec
07-01-2013, 23:08
Спосибо за помощь, все получилось. Установлен у меня GNU Sed. Вариант с PowerShell мне показался лучше, не надо нечего посторонего устанавливать.
zorgi_morgi
06-02-2014, 13:17
день добрый! помогите пожалуйста! подобная ситуация, только мне нужно удалить символ перевода строки (\n). имеющийся файл xml чем только не открывал, этот символ не отображается, только в xmlpad на вкладке grid view видно.
по вашему примеру и плюс гугл получилось такое
"c:\Program Files (x86)\GnuWin32\bin\sed.exe" ":a;N;$!ba;s/\n//g" 1.txt > 2.txt
pause
вот такой батник. для примера я создал файл 1.txt
1.Ехал greka через реку,Видит greka - в реке рак.
2.Ехал greka через реку,Видит greka - в реке рак.
3.Ехал greka через реку,Видит greka - в реке рак.
4.Ехал greka через реку,Видит greka - в реке рак.
5.Ехал greka через реку,Видит greka - в реке рак.
6.Ехал greka через реку,Видит greka - в реке рак.
7.Ехал greka через реку,Видит greka - в реке рак.
8.Ехал greka через реку,Видит greka - в реке рак.
9.Ехал greka через реку,Видит greka - в реке рак.
10.Ехал greka через реку,Видит greka - в реке рак
батник без проблем справился с поставленной задачей. весь файл стал в одну строчку. ОК.
а вот с моим файлом xml не может справится, замены нет.
Подскажите пожалуйста, очень надо...
имеющийся файл xml »
Не вижу файла xml, упакованного в архив и приложенного к сообщению.
zorgi_morgi
06-02-2014, 14:09
vot primer
vot primer »Там разделитель строк \r\n (0x0D, 0x0A).
@ECHO OFF
FOR /F %%I IN ('FIND /C /V ""^<1.txt') DO SET n=%%I
(
FOR /L %%I IN (1 1 %n%) do (
SET /P "string="
CALL SET /P"=%%string%%"<nul
)
)<1.txt>1_new.txt
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.