Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] изменение xml-файла скриптом

Ответить
Настройки темы
Любой язык - [решено] изменение xml-файла скриптом

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


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Искал похожие решения, не получилось. Со скриптовыми языками не знаком.

step1. По пути C:\Documents and Settings\имя пользователя\Application Data\.myfolder находятся несколько xml-файлов. //Пользователей может быть много, имя заранее не известно
в одном из них settings.xml много строк вида

Цитата:
<pref name="savedstatus">
<pref name="default" type="int" value="1354262942" />
<pref name="startup" type="int" value="0" />
<pref name="startup_current_status" type="bool" value="1" />
<pref name="idleaway" type="int" value="1354193083" />
<pref name="isidleaway" type="bool" value="0" />
</pref>
step2. Выделенное значение динамическое (числовое), может меняться. Это значение надо найти в другом файле в этой же папке stat.xml и установить там значения offline в online. Если там уже стоит online, оставить как есть.

Цитата:
<status name="Auto-Cached" transient="true" created="1354262942" lastused="1354262942" usage_count="1">
<state>offline</state>
<substatus>
<state>offline</state>
</substatus>
</status>

Отправлено: 11:56, 04-06-2013

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


unkilledfore, попробуйте этот BAT-файл:

Код: Выделить весь код
@ECHO OFF
SET SettingsFile=%APPDATA%\.myfolder\settings.xml
SET StatusFile=%APPDATA%\.myfolder\stat.xml
FOR /F "tokens=7 delims== " %%I IN ('FINDSTR default "%SettingsFile%"') DO (
 SET Value=%%~I
)
SETLOCAL ENABLEDELAYEDEXPANSION>status_new.xml
FOR /F "tokens=4" %%I IN ('FINDSTR %Value% "%StatusFile%"') DO (
 IF %%I==created="%Value%" (
  FOR /F "usebackq tokens=*" %%J IN ("%StatusFile%") DO (
   SET "VAR1=%%J"
   SET /P "VAR2=!VAR1:offline=online!" 0>nul 1>>stat_new.xml
   ECHO.>>stat_new.xml
)
  TYPE stat_new.xml>"%StatusFile%"
))
DEL stat_new.xml
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:22, 04-06-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


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


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо большое. Можно уточнить?
Цитата Georgio:
FOR /F "tokens=7 delims== " %%I IN ('FINDSTR default "%SettingsFile%"') »
эта команда ищет первое попавшееся слово default? или находит все? в первом файле есть несколько параметров, содержащих слово default. То, которое нужно - первое.

Отправлено: 09:21, 05-06-2013 | #3


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата unkilledfore:
эта команда ищет первое попавшееся слово default? или находит все? в первом файле есть несколько параметров, содержащих слово default. То, которое нужно - первое. »
Команда FINDSTR ищет все строки со словом "default", но в цикле они обрабатываются так, чтобы в найденных строках вычленить числовое значение Value.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:52, 05-06-2013 | #4


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


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Georgio:
чтобы в найденных строках вычленить числовое значение Value »
Такие строки он тоже обработает?
Цитата:
<pref name="theme" type="string" value="Default" />
......
<pref name="pounce_default" type="bool" value="1" />
.....
<pref name="default_actions">
<pref name="open-window" type="bool" value="0" />

Отправлено: 10:28, 05-06-2013 | #5


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата unkilledfore:
<pref name="pounce_default" type="bool" value="1" /> »
-- эта строка может "представлять опасность" для общества выполнения скрипта.


С учётом "новых открывшихся обстоятельств" дело будет пересмотрено переделываю скрипт:

Код: Выделить весь код
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION>stat_new.xml
SET SettingsFile=%APPDATA%\.myfolder\settings.xml
SET StatusFile=%APPDATA%\.myfolder\stat.xml
FOR /F "tokens=7 delims== " %%I IN ('FINDSTR default "%SettingsFile%"') DO (
 FOR /F "tokens=4" %%J IN ('FINDSTR %%~I "%StatusFile%"') DO (
  IF %%J==created=%%I (
   FOR /F "usebackq tokens=*" %%K IN ("%StatusFile%") DO (
    SET "VAR1=%%K"
    SET /P "VAR2=!VAR1:offline=online!" 0>nul 1>>stat_new.xml
    ECHO.>>stat_new.xml
)
   TYPE stat_new.xml>"%StatusFile%"
)))
DEL stat_new.xml

Больше "подводных камней" не будет?
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:56, 05-06-2013 | #6


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


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Georgio:
Больше "подводных камней" не будет? »
Скрипт чистит файл stat.xml

Цитата Georgio:
FOR /F "tokens=7 delims== " %%I IN ('FINDSTR default "%SettingsFile%"') »
cmd говорит "Непредвиденное появление %%I
для всех трех FOR пишет про непредвиденное появление переменной %%I %%J %%K

Отправлено: 09:39, 06-06-2013 | #7


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


unkilledfore, выложите полностью содержание файлов settings.xml и stat.xml или прикрепите эти файлы к странице как вложения.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:08, 06-06-2013 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Лучше именно вложениями, упаковав в архив — из-за кодировки.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:18, 06-06-2013 | #9


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


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar files.rar
(1.0 Kb, 7 просмотров)

Вот

Отправлено: 11:48, 06-06-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] изменение xml-файла скриптом

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] помогите со скриптом перемещения файла. igor-kineshma Скриптовые языки администрирования Windows 1 09-01-2013 14:29
Помогите со скриптом модификации файла xls Pozia AutoIt 5 16-04-2011 22:11
[решено] проверка XML-файла на соответствие XML schema в IE 6 и Firefox 2 dimait Вебмастеру 4 23-08-2007 02:02
Помогите со скриптом для поиска файла. vlazari Microsoft Windows 2000/XP 2 27-06-2006 14:39
Схема для XML файла Skynet Программирование и базы данных 3 22-03-2005 14:57




 
Переход