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

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

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

Старожил


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

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


Вложения
Тип файла: rar папка.rar
(20.0 Kb, 7 просмотров)
Здравствуйте
Возможно ли скриптом проделать следующее: заменить значения в файле xml по справочнику. Справочник в файле Лист Microsoft Excel.xlsm в таблице SNMPDiscovery. Желательно чтобы данные справочника брались из умной таблицы

Отправлено: 20:17, 02-05-2022

 

Старожил


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

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


скрипт на повершел можно написать чтобы это сделать

Отправлено: 02:11, 03-05-2022 | #2



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

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


Старожил


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

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


Паувэр шелл тоже подходит.
Только я сам не смогу написать, т.к. не умею
Прошу помочь.
Сейчас эту задачу выполняю вручную в Нотепадд++. Двадцать-тридцать замен не очень напрягает. Но есть вероятность что замен будет более пятидесяти раз. Благо это нужно всего два-три раза в месяц

Отправлено: 08:44, 03-05-2022 | #3


Ветеран


Contributor


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

Профиль | Отправить 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


Старожил


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

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


Вложения
Тип файла: xlsx Microsoft Excel.xlsx
(18.4 Kb, 1 просмотров)

megaloman, спасибо за скрипт!
С кириллицей в пути или в имени файла не захотел работать. Но это не беда
А вот с этим справочником почему не хочет работать? 12 замен сделало и все
ps предупрежу что в последней строке справочника Номер 1 заменяется на vv. Это я проверял будет ли происходить замена если в одном искомом значении есть часть другого искомого значения. Будет

Последний раз редактировалось v79italya, 03-05-2022 в 13:09.


Отправлено: 12:57, 03-05-2022 | #5


Ветеран


Contributor


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

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


Вложения
Тип файла: txt я22050313.vbs.txt
(991 байт, 2 просмотров)

v79italya,
Цитата v79italya:
С кириллицей в пути или в имени файла не захотел работать. »
- не надо ляля. Сохраняйте скрипт в 1251 кодировке, у меня же работает. На всякий случай прилагаю свой файл.
Цитата v79italya:
А вот с этим справочником почему не хочет работать? 12 замен сделало и все »
Цитата Кто-то из патриархов:
Всегда можно подобрать данные, способные одурачить программу
Проблема - в столбце справочника пустые ячейки. Уточняю: в столбце A не должно быть пустых ячеек среди данных. В столбце B - эту ситуацию учел.
Цитата 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"
Переименуйте мой файл из txt. Пропишите свои пути.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:10, 03-05-2022 | #6


Старожил


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

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


megaloman, спасибо еще раз
Цитата megaloman:
сли в обрабатываемом файле эти значения в кавычках »
вот этот момент я не до конца понял. Если надо заменить Магазин Продуктов на Продуктовый Магазин, а также заменить Магазин на Ларек и Продукт на Товар, то как следует их в кавычки брать?

Отправлено: 17:46, 03-05-2022 | #7


Ветеран


Contributor


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

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


v79italya, Я в тупике, что Вам надо.
Если в справочнике
Магазин Продуктов и Продуктовый Магазин
скрипт в файле будет искать "Магазин Продуктов" и менять на "Продуктовый Магазин"
"Магазин продуктов №5" уже не поменяется на "Продуктовый магазин" если это в справочнике не прописано.
А иначе как определить, где полное название а где его часть?
Цитата:
будет ли происходить замена если в одном искомом значении есть часть другого искомого значения. Будет
- мы это проходили. Сформулируйте, как определить, как подставить строку. Будем думать.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 17:58, 03-05-2022 | #8


Старожил


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

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


Вложения
Тип файла: txt primer.txt
(2.7 Kb, 1 просмотров)

megaloman, меня уже все устраивает. Даже первый Ваш скрипт мне подходит(Учитывать отсутствие кириллицы в пути и имени файла не проблема).
А так вот например с чем приходится работать

Отправлено: 20:14, 03-05-2022 | #9


Ветеран


Contributor


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

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


Цитата v79italya:
А так вот например с чем приходится работать »
Что это? И что с этого надо поиметь? Не пойму проблему кириллицы в пути и имени файла - нет её. Формулируйте, чтобы можно было решить.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 20:20, 03-05-2022 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход