|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск строки по слову и добавление двух новых строк после найденой. |
|
CMD/BAT - [решено] Поиск строки по слову и добавление двух новых строк после найденой.
|
Новый участник Сообщения: 6 |
Здравствуйте.
Задача: Есть XML файл примерно такого вида:
Необходимо написать батник, который добавит пару строк в XML файле. В нем нужно найти строку содержащие текст "ТекстИнф Идентиф="ДокументОбОтгрузке" и добавить после этой строки ещё две строки Например: <ТекстИнф Идентиф="номер_тк" Значен="0146"/> <ТекстИнф Идентиф="код_получателя" Значен="s"/> Должно получиться вот так:
Обработанный файл нужно сохранить под тем же именем. Возможно кто то уже сталкивался с похожей задачей. Буду весьма благодарен за любую подсказку. Заранее огромное спасибо! |
|
Отправлено: 11:24, 31-05-2024 |
fascinating rhythm Сообщения: 6565
|
Профиль | Отправить PM | Цитировать powershell
$file = "C:\temp\in\file.xml" $xmlfile = [xml](gc $file) function Add-XmlElement ($id,$value) { $newElement = $xmlfile.CreateElement("ТекстИнф") $newElementAdd = $xmlfile.Файл.ИнфПолФХЖ1.AppendChild($newElement) $newElementAttribute = $newElementAdd.SetAttribute("Идентиф","$id") $newElementAttribute = $newElementAdd.SetAttribute("Значен","$value") } Add-XmlElement -id "номер_тк" -value "0146" Add-XmlElement -id "код_получателя" -value "s" $xmlfile.Save($file) https://www.tutorialspoint.com/how-t...ing-powershell |
------- Отправлено: 12:14, 31-05-2024 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Круто всё работает.
А как сделать чтоб замена прошла по всем XML файлам c разными именами в определённой папке. |
Отправлено: 12:32, 31-05-2024 | #3 |
fascinating rhythm Сообщения: 6565
|
Профиль | Отправить PM | Цитировать Добавил, чтобы один и тот же ID не добавлялся несколько раз.
function Add-XmlElement ($id,$value) { if (($xmlfile.Файл.ИнфПолФХЖ1.ChildNodes).идентиф -notcontains $id) { $newElement = $xmlfile.CreateElement("ТекстИнф") $newElementAdd = $xmlfile.Файл.ИнфПолФХЖ1.AppendChild($newElement) $newElementAttribute = $newElementAdd.SetAttribute("Идентиф","$id") $newElementAttribute = $newElementAdd.SetAttribute("Значен","$value") } } foreach ($file in dir C:\temp\in\*.xml) { $xmlfile = [xml](gc $file.fullname) Add-XmlElement -id "номер_тк" -value "0146" Add-XmlElement -id "код_получателя" -value "s" $xmlfile.Save($file.fullname) } |
------- Последний раз редактировалось DJ Mogarych, 31-05-2024 в 13:26. Причина: + идемпотентность по id Отправлено: 13:12, 31-05-2024 | #4 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Большущее тебе спасибо!
|
|
Отправлено: 13:57, 31-05-2024 | #5 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать
Очень странная ситуация.
С тем файликом что я прикреплял всё в порядке , а вот с реальным есть проблема. Вот реальный файлик |
||||
Отправлено: 14:52, 31-05-2024 | #6 |
fascinating rhythm Сообщения: 6565
|
Профиль | Отправить PM | Цитировать Ну вполне естественно, структура разная.
function Add-XmlElement ($id,$value) { if (($xmlfile.Файл.Документ.СвСчФакт.ИнфПолФХЖ1.ChildNodes).идентиф -notcontains $id) { $newElement = $xmlfile.CreateElement("ТекстИнф") $newElementAdd = $xmlfile.Файл.Документ.СвСчФакт.ИнфПолФХЖ1.AppendChild($newElement) $newElementAttribute = $newElementAdd.SetAttribute("Идентиф","$id") $newElementAttribute = $newElementAdd.SetAttribute("Значен","$value") } } |
------- Отправлено: 15:52, 31-05-2024 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Поиск строки по слову и добавление новой строки после найденой. | Mikhael2011 | Скриптовые языки администрирования Windows | 17 | 16-03-2017 03:37 | |
CMD/BAT - CMD/BAT Поиск по каталогам файлов bat и конвертирование их в JPEG | freerider1989 | Скриптовые языки администрирования Windows | 1 | 18-04-2016 08:37 | |
CMD/BAT - CMD/BAT разбор строки с символом перехода строки в конце. | Alex1254 | Скриптовые языки администрирования Windows | 0 | 19-09-2013 19:24 | |
CMD/BAT - [решено] Поиск и удаление строк, содержащих перевод строки после двоеточия | SergeyVD | Скриптовые языки администрирования Windows | 3 | 14-03-2012 22:36 | |
Java - Сортировка строк по первому слову в алфавитном порядке | pogo | Программирование и базы данных | 5 | 23-12-2011 08:05 |
|