Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


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

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


Я по-прежнему считаю, что работать с xml следует средствами, для того предназначенными.

Цитата Armsinglom:
новые параметры нужно добавлять между строк <add key="UseDiff" value="false" /> и </appSettings>, а так же учесть что если данные параметры есть то их трогать не нужно. »
Я всё-таки полагаю, что «трогать» их нужно. Например, для того, чтобы задать указанные значения. Например:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim objDictionary
Dim strSourceFile

Dim objFSO
Dim strKey
Dim objXMLDOMElement


Set objDictionary = WScript.CreateObject("Scripting.Dictionary")

With objDictionary
	.Add "SkipPreSelect",  "false"
	.Add "RefundLockTime", "20"
	.Add "UseSverkaDiff",  "false"
End With

strSourceFile = "cfg.Config"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
	With WScript.CreateObject("Microsoft.XMLDOM")
		.preserveWhiteSpace = True
		.load strSourceFile
		
		For Each strKey In objDictionary.Keys
			Set objXMLDOMElement = .selectSingleNode("/configuration/appSettings/add[@key='" & strKey & "']")
			
			If objXMLDOMElement Is Nothing Then
				Set objXMLDOMElement = .createElement("add")
				objXMLDOMElement.setAttribute "key", strKey
				objXMLDOMElement.setAttribute "value", objDictionary.Item(strKey)
				.selectSingleNode("/configuration/appSettings").appendChild objXMLDOMElement
			Else
				objXMLDOMElement.setAttribute "key", strKey
				objXMLDOMElement.setAttribute "value", objDictionary.Item(strKey)
			End If
			
			Set objXMLDOMElement = Nothing
		Next
		
		objFSO.CopyFile strSourceFile, strSourceFile & ".bak", True
		
		.save strSourceFile
	End With
Else
	WScript.Echo "Can't find source file [" & strSourceFile & "]."
	WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

Если параметров нет — они будут добавлены, если есть — у них будут заданы указанные значения. Оригинальный файл будет сохранён с расширением .bak.

Цитата Armsinglom:
а можно этот скрипт заставить что бы он удалял все строки между
<add key="UseSverkaDiff" value="false" />
и
</appSettings>
и прописывал то что я укажу, т .е. не важно какие между этими строками были параметры и строки, он их затрёт и впишет нужные мне. »
Какой в этом смысл? А если там окажутся нужные узлы? В xml ведь, хоть порядок расположения и присутствует, но, фактически, не используется на практике. Тогда уж стоит удалять всё содержимое узла appSettings и задавать своё.

Последний раз редактировалось Iska, 24-02-2017 в 08:29. Причина: Добавил пропущенную запятую

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

Отправлено: 02:16, 24-02-2017 | #12