|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Заменить в файле xml значения по справочнику |
|
|
Любой язык - Заменить в файле xml значения по справочнику
|
Старожил Сообщения: 239 |
Здравствуйте
Возможно ли скриптом проделать следующее: заменить значения в файле xml по справочнику. Справочник в файле Лист Microsoft Excel.xlsm в таблице SNMPDiscovery. Желательно чтобы данные справочника брались из умной таблицы |
|
Отправлено: 20:17, 02-05-2022 |
Старожил Сообщения: 250
|
Профиль | Отправить PM | Цитировать скрипт на повершел можно написать чтобы это сделать
|
Отправлено: 02:11, 03-05-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 239
|
Профиль | Отправить PM | Цитировать Паувэр шелл тоже подходит.
Только я сам не смогу написать, т.к. не умею Прошу помочь. Сейчас эту задачу выполняю вручную в Нотепадд++. Двадцать-тридцать замен не очень напрягает. Но есть вероятность что замен будет более пятидесяти раз. Благо это нужно всего два-три раза в месяц |
Отправлено: 08:44, 03-05-2022 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать v79italya, .vbs
Option Explicit Dim FileXLS: FileXLS = "Z:\Box_In\папка\Лист Microsoft Excel.xlsm" Dim BeginXLS: BeginXLS = "A2" Dim FileXMLin: FileXMLin = "Z:\Box_In\папка\SNMPDiscovery.xml" Dim FileXMLout: FileXMLout = "Z:\Box_In\папка\SNMPDiscoveryOut.xml" Dim Mass, i, i1, i2, j2 Dim AllTxt MsgBox "Begin" With CreateObject("Excel.Application") .Visible = False 'True .Workbooks.Open FileXLS Mass = .Range(.Range(BeginXLS), .Range(BeginXLS).Offset(0, 1).End(-4121)) .Quit End With i1 = LBound(Mass, 1) i2 = UBound(Mass, 1) j2 = UBound(Mass, 2) With CreateObject("Scripting.FileSystemObject") With .OpenTextFile(FileXMLin, 1, False) AllTxt = .ReadAll .Close End With For i = i1 To i2 AllTxt = Replace(AllTxt, Mass(i, i1), Mass(i, j2)) Next With .OpenTextFile(FileXMLout, 2, True) .Write AllTxt .Close End With End With MsgBox "Done" |
------- Отправлено: 12:01, 03-05-2022 | #4 |
Старожил Сообщения: 239
|
Профиль | Отправить PM | Цитировать megaloman, спасибо за скрипт!
С кириллицей в пути или в имени файла не захотел работать. Но это не беда А вот с этим справочником почему не хочет работать? 12 замен сделало и все ps предупрежу что в последней строке справочника Номер 1 заменяется на vv. Это я проверял будет ли происходить замена если в одном искомом значении есть часть другого искомого значения. Будет |
|
Последний раз редактировалось v79italya, 03-05-2022 в 13:09. Отправлено: 12:57, 03-05-2022 | #5 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать v79italya,
Цитата v79italya:
Цитата v79italya:
Цитата Кто-то из патриархов:
Цитата v79italya:
Option Explicit Dim FileXLS: FileXLS = "D:\Мой контент\Загрузки\Microsoft Excel.xlsx" Dim BeginXLS: BeginXLS = "A2" Dim FileXMLin: FileXMLin = "Z:\Box_In\папка\SNMPDiscovery.xml" Dim FileXMLout: FileXMLout = "Z:\Box_In\папка\SNMPDiscoveryOut.xml" Dim Mass, i, i1, i2, j2 Dim AllTxt MsgBox "Begin" With CreateObject("Excel.Application") .Visible = False 'True .Workbooks.Open FileXLS Mass = .Range(BeginXLS + ":" + .Range(BeginXLS).End(-4121).Offset(0, 1).Address) .Quit End With i1 = LBound(Mass, 1) i2 = UBound(Mass, 1) j2 = UBound(Mass, 2) With CreateObject("Scripting.FileSystemObject") With .OpenTextFile(FileXMLin, 1, False) AllTxt = .ReadAll .Close End With For i = i1 To i2 AllTxt = Replace(AllTxt, """" + Mass(i, i1) + """", """" + Mass(i, j2) + """") Next With .OpenTextFile(FileXMLout, 2, True) .Write AllTxt .Close End With End With MsgBox "Done" |
||||
------- Отправлено: 16:10, 03-05-2022 | #6 |
Старожил Сообщения: 239
|
Профиль | Отправить PM | Цитировать megaloman, спасибо еще раз
Цитата megaloman:
|
|
Отправлено: 17:46, 03-05-2022 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать v79italya, Я в тупике, что Вам надо.
Если в справочнике Магазин Продуктов и Продуктовый Магазин скрипт в файле будет искать "Магазин Продуктов" и менять на "Продуктовый Магазин" "Магазин продуктов №5" уже не поменяется на "Продуктовый магазин" если это в справочнике не прописано. А иначе как определить, где полное название а где его часть? Цитата:
|
|
------- Отправлено: 17:58, 03-05-2022 | #8 |
Старожил Сообщения: 239
|
Профиль | Отправить PM | Цитировать megaloman, меня уже все устраивает. Даже первый Ваш скрипт мне подходит(Учитывать отсутствие кириллицы в пути и имени файла не проблема).
А так вот например с чем приходится работать |
Отправлено: 20:14, 03-05-2022 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата v79italya:
|
|
------- Отправлено: 20:20, 03-05-2022 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - [решено] Поиск hex значения в файле, замена значения на заданное, сохранение файла | 9119 | Скриптовые языки администрирования Windows | 24 | 28-01-2024 21:23 | |
CMD/BAT - [решено] Найти текст по маске в файле и вставить найденные значения в ini файл | Anidzuka | Скриптовые языки администрирования Windows | 20 | 10-01-2019 19:06 | |
CMD/BAT - [решено] замена значения в xml-файле | firstarey | Скриптовые языки администрирования Windows | 20 | 13-11-2017 11:24 | |
VBS/WSH/JS - помогите заменить один блок на другой в xml файле | khodakovskyi | Скриптовые языки администрирования Windows | 0 | 07-01-2013 00:55 | |
работа с файлами в HEX формате, поиск и замена по 16ричному адресу значения в файле. | andr_mozg | AutoIt | 3 | 10-03-2012 10:20 |
|