Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
tolyanich604
0 / 0 / 0
Регистрация: 29.12.2016
Сообщений: 14
1

Вывод в файл находящегося между заданными тегами текста из каждого имеющегося в определённой папке XML-файла

29.12.2016, 18:12. Просмотров 908. Ответов 4
Метки нет (Все метки)

Добрый день! Прошу помочь с bat-скриптом, который бы читал из одной папки все доступные xml-файлики, читал определенный тег внутри них, например <name>ZZZ</name> и генерил txt-файл с полученным из <name> (желательно так, чтобы каждая строчка txt-файла содержала полученное из <name> данных файлов, или чересчур сложно? ).
На просторах нашел вот такой скрипт:
Windows Batch file
1
for /F "tokens=1,2 delims=><" %%i in (q.xml) do (if "%%i" == "NAME" echo %%j)
но мне он , как видите не очень подходит.

Прошу вас помочь, друзья! Заранее вам спасибо!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2016, 18:12
Ответы с готовыми решениями:

Вывод заданной части определённой строки каждого XML-файла в указанной папке
Добрый день! Есть папка, в которую закачиваются файлы с ftp несколько раз в день. Названия...

Как в XML-файле изменить значения, находящиеся между заданными тегами?
Здравствуйте, подскажите, как изменить в файле *.xml значения в тэгах &lt;DocNumber&gt;...&lt;/DocNumber&gt; на...

Копирование файла, находящегося в одной папке с BAT-файлом, в папку, в которой будет найден одноимённый файл
Всем привет, помогите пожалуйста написать BAT файл, нужно чтобы делал следующее: Копировал файл...

Присвоение переменной значения, находящегося в определённой строке заданного файла
Файл с паролем расположен по пути /home/omp/rdb/SYSDBA.password (таких файлов всего 30 штук, пароли...

Получить часть текстового массива между заданными тегами
Здравствуйте. Есть массив текста, из него нужно оставить только то, что находится между...

4
Garry Galler
1996 / 1509 / 580
Регистрация: 28.10.2013
Сообщений: 3,905
30.12.2016, 02:37 2
Лучший ответ Сообщение было отмечено tolyanich604 как решение

Решение

Это гибрид cmd+vbs. Употреблять как с раcширением .bat и только для правильных xml-файлов.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
'2>nul&cls&@cscript /nologo /e:vbscript "%~f0" %*&pause&exit/b
 
Dim FolderPath,nodeName, destFile
 
Set fso = CreateObject("Scripting.FileSystemObject")
' путь для поиска - папка батника; или указываем нужную папку
FolderPath = fso.GetParentFolderName(WScript.ScriptFullName) 
nodeName = "name"           ' имя искомого узла
destFile = FolderPath & "\out.txt"  ' имя файла для записи
 
Set stream = fso.CreateTextFile(destFile)
 
Set xmlParser = CreateObject("Msxml2.DOMDocument")
xmlParser.async = False
Set Files = fso.GetFolder(FolderPath).Files 
For Each File In Files 
    filepath = File.Path
    If fso.GetExtensionName(filepath) = "xml" Then
        xmlParser.load filepath
        Set colNodes = xmlParser.selectNodes("//" & nodeName)
        For Each nodeNode In colNodes
            WScript.Echo nodeNode.text
            stream.WriteLine nodeNode.text
        Next
    End if    
Next
stream.Close
1
tolyanich604
0 / 0 / 0
Регистрация: 29.12.2016
Сообщений: 14
30.12.2016, 12:15  [ТС] 3
спасибо, работает!

Добавлено через 2 часа 30 минут
Garry Galler, сейчас понял, что есть еще один аспект. xml-ки позже удаляются из папки, а можно ли чтобы в out.txt оставались значения, а не перезаписывались каждый раз новыми?
0
tolyanich604
0 / 0 / 0
Регистрация: 29.12.2016
Сообщений: 14
18.01.2017, 16:39  [ТС] 4
Прошу помощи! Неужели никто не сможет помочь?
есть еще один аспект. xml-ки позже удаляются из папки, а можно ли чтобы в out.txt оставались значения, а не перезаписывались каждый раз новыми?
Если это сделать сложно, то может быть можно назначить в FolderPath такую переменную, которая бы ежедневно менялась в зависимости от даты. Дело в том, что xml-ки лежат в папках с названиями дат (2017-01-13, 2017-01-12, 2017-01-11) и, если сегодня 13 января, то автоматически подставлялась папка «2017-01-13»?

Структура такая получается:
- cкрипт.cmd
- out.txt
- 2017-01-13
-- xyzxyza.xml
-- xyzxyzab.xml
-- xyzxyzabc.xml
- 2017-01-12
-- xyzxyza.xml
-- xyzxyzab.xml
-- xyzxyzabc.xml
0
Garry Galler
1996 / 1509 / 580
Регистрация: 28.10.2013
Сообщений: 3,905
18.01.2017, 19:22 5
Режим дозаписи для файла?
Заменить строку
Set stream = fso.CreateTextFile(destFile)
на
Set stream = fso.OpenTextFile(destFile,8,True)
1
18.01.2017, 19:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2017, 19:22

Отображение на странице файла, находящегося в папке
Добрый день! Есть некий файл, и путь к нему:/var/www/сайт/data/www/сайт/папка/файл . Мне...

Запуск exe-файла, находящегося в расшаренной папке
Добрый день. Есть компьютеры в сети (comp1, comp2...compN). На comp1 расшарена папка, в которой...

XML изменение значения между тегами
XMLDocument1.LoadFromFile(ExtractFilePath(paramstr(0))+'home.xml');...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru