|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Замена строк в файле формата .xml |
|
|
CMD/BAT - [решено] Замена строк в файле формата .xml
|
Пользователь Сообщения: 50 |
Здравствуйте, уважаемые форумчане OSZone.net. Нужна помощь, а именно:
в файле, например, "example.xml" нужно найти и заменить строку "<MediaPath Path="Media" />" на "<MediaPath Path="Media" /><MediaPath Path="Vehicles" />" (второе пункт, "Vehicles", со следующей строчки). Возможно ли это сделать через .bat файл? Файл 152439 |
|
Отправлено: 18:54, 08-05-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать TheLeon, зависит от содержимого файла. Надёжнее использовать WSH/PowerShell.
Упакуйте оригинальный файл .xml и откорректированный файл .xml в архив и приложите к сообщению. |
Отправлено: 19:06, 08-05-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Это не вполне XML.
На PowerShell: $sSourceFile = 'C:\Мои проекты\0153\config.xml'
if(Test-Path -Path $sSourceFile -PathType Leaf) {
$oXml = [xml](Get-Content -Path $sSourceFile)
if($oXml.SelectSingleNode("/Config/MediaPath[@Path='Vehicles']") -isnot [System.Xml.XmlElement]) {
[System.Xml.XmlElement]$oXmlElement = $oXml.CreateElement('MediaPath')
$oXmlElement.SetAttribute('Path', 'Vehicles') | Out-Null
$oXml.SelectSingleNode("/Config").AppendChild($oXmlElement) | Out-Null
}
$oXml.Save($sSourceFile)
} else {
Write-Host "Can't find source file [$sSourceFile]." -ForegroundColor Red
}
|
Отправлено: 20:14, 08-05-2018 | #3 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Iska, здравствуйте ещё раз, на счёт оболочки PowerShell, т.е. каждому придётся менять политику PowerShell(а то по-умолчанию: блокирует все скрипты), без этого ограничения никак сделать нельзя, верно? Или можно, например, через батник изменить политику(если возможно) и потом уже запустить сам скрипт?
|
Отправлено: 07:43, 09-05-2018 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать TheLeon, ну, вот Вам на WSH:
Option Explicit
Dim strSourceFile
Dim objXMLDOMNode
Dim objXMLDOMElement
strSourceFile = "C:\Мои проекты\0153\config.xml"
If WScript.CreateObject("Scripting.FileSystemObject").FileExists(strSourceFile) Then
With WScript.CreateObject("MSXML2.DOMDocument")
If .load(strSourceFile) Then
Set objXMLDOMNode = .SelectSingleNode("/Config/MediaPath[@Path='Vehicles']")
If objXMLDOMNode Is Nothing Then
Set objXMLDOMElement = .CreateElement("MediaPath")
objXMLDOMElement.SetAttribute "Path", "Vehicles"
.SelectSingleNode("/Config").appendChild objXMLDOMElement
Set objXMLDOMElement = Nothing
.save strSourceFile
Else
Set objXMLDOMNode = Nothing
End If
Else
WScript.Echo "Can't load source file [" & strSourceFile & "]."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 1
End If
WScript.Quit 0
|
|
Отправлено: 12:13, 09-05-2018 | #5 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Iska, опять проблема, вроде пытаюсь запустить, но выдает ошибку, что не может найти "Config.xml" - это из-за того(наверно), что я поставил вместо "strSourceFile = "С:/.../config.xml"" на "strSourceFile = "config.xml"", т.е. надо ставить полный путь? (извиняюсь за тупость, просто ни разу не пользовался подобными средствами).
- P.S: Задумка была такова: установщик(созданный на Inno Setup) заканчивает установку основных файлов для игры, затем запускается батник(или подобное) и прописывает дополнительные строчки (например, "<MediaPath Path="Vehicles" />") в конфигурационном файле(это для того, чтобы папка тоже была задействована при запуске игрушки). |
Отправлено: 18:06, 09-05-2018 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата TheLeon:
Цитата TheLeon:
Цитата TheLeon:
|
|||
Отправлено: 19:20, 09-05-2018 | #7 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Iska, как-то не подумал о готовом файле, спасибо за помощь и извините, что занял ваше время.
|
Отправлено: 14:14, 10-05-2018 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать TheLeon, нет, ну, если у Вас действительно в зависимости от каких-то параметров инсталляции в случае а) добавляется одно, в случае б) добавляется другое, в случае в) добавляется первое и третье, а в случае г) не добавляется ничего — тогда, действительно, имеет смысл именно корректировать файл (причём, прямо из-под инсталляции, посредством встроенного языка), а не делать кучу готовых файлов на все случаи жизни.
|
Отправлено: 14:38, 10-05-2018 | #9 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Iska, а, слушайте: я задал вопрос о скрипте потому, что этот файл (config.xml), мог уже до начала установки редактирован, т.е. уже были добавленные какие-нибудь строчки, вот я и хотел с помощью скрипта добавить свои строчки в этот файл, автоматизированно.
- Каждая строчка отвечала за подгрузку файлов для игры, от стандартных до кастомных(моды). - И тут появляется опять проблема, как поставить путь до файла, в соответствие с настройками пользователя(смотря какой он путь выбрал). |
Отправлено: 14:42, 10-05-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] замена значения в xml-файле | firstarey | Скриптовые языки администрирования Windows | 20 | 13-11-2017 11:24 | |
CMD/BAT - Замена строк в файле по признаку и маске | ВиталийВ | Скриптовые языки администрирования Windows | 12 | 13-09-2015 07:54 | |
CMD/BAT - [решено] Замена строк в файле, содержащем пустые строки | SharkyEXE | Скриптовые языки администрирования Windows | 6 | 02-03-2015 15:42 | |
CMD/BAT - замена слов в XML файле | danishru | Скриптовые языки администрирования Windows | 0 | 09-02-2014 01:06 | |
CMD/BAT - Замена нескольких строк в файле | bcubbs@fb | Скриптовые языки администрирования Windows | 3 | 24-01-2013 14:01 |
|