Войти

Показать полную графическую версию : [решено] Скрипт на VBS на проверку содержимого файла и его замене


ospekt00
28-02-2017, 13:28
Добрый день уважаемы Форумчане, помогите пожалуйста со скриптом на VBS.
Требуется прочитать файл - C:\prog\test1.xml и проверить есть ли в нем строка содержащая тег <Server>192.168.0.11</Server>.
Если есть строка содержащая данный тег, то нужно заменить данный файл (C:\prog\test1.xml) файлом - D:\waq\test_new.xml .
Пытался написать скрипт такой:

Const OverWriteFiles = True

Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set strFile = FSO.OpenTextFile("C:\prog\test1.xml", 1)

strServ = "D:\waq\test_new.xml"
strString = "<Server>192.168.0.11</Server>"

str= strFile.ReadLine ()


if ((str) <> (strString)) = True then
FSO.CopyFile (strServ), "C:\prog\", OverWriteFiles

end if

Но он все время просто копирует файл, постоянно его перезатирая, то есть проверка не работает.
Помогите пожалуйста организовать данный скрипт.
Заранее благодарю!!!

Iska
28-02-2017, 13:42
файл - C:\prog\test1.xml »
Образец файла упакуйте в архив и приложите к сообщению.

то нужно заменить данный файл (C:\prog\test1.xml) файлом - D:\waq\test_new.xml . »
А может есть вариант проще — что-то заменить/удалить внутри существующего, не?

ospekt00
28-02-2017, 13:56
Вот архив с файлом, нет к сожалению нужно именно заменять файл на тот который лежит на диске D:\.
Заранее Благодарю.

Iska
28-02-2017, 14:20
Гмм… А почему Вы его обозвали test1.vbs ;)?

Примерно так:
Option Explicit

Dim strSourceFile
Dim strRestoreFile

Dim objFSO


strSourceFile = "C:\prog\test1.xml"
strRestoreFile = "D:\waq\test_new.xml"

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

If objFSO.FileExists(strSourceFile) Then
If objFSO.FileExists(strRestoreFile) Then
With WScript.CreateObject("Microsoft.XMLDOM")
.load strSourceFile

If Not .selectSingleNode("/head/Postgre[Server = '192.168.0.11']") Is Nothing Then
objFSO.CopyFile strRestoreFile, strSourceFile, True
End If
End With
Else
WScript.Echo "Can't find file for restore [" & strRestoreFile & "]."
WScript.Quit 2
End If
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

ospekt00
28-02-2017, 14:58
Огромное Вам спасибо, скрипт работает, но я неправильно поставил задачу немного)),
я написал: Если есть строка содержащая данный тег, то нужно заменить данный файл (C:\prog\test1.xml) файлом - D:\waq\test_new.xml . »
а надо было: Если нет такой стороки...., но я это исправил удалив Not из If Not .selectSingleNode("/head/Postgre[Server = '192.168.0.11']") Is Nothing Then
И все заработало!!!
Может Вы подскажите где есть ресурсы на которых можно почитать про работу VBSа с XML и др. файлами.
Спасибо!!!

Iska
28-02-2017, 15:18
Задать запрос в Google вида «vbscript xml» и посмотреть несколько первых ссылок. На русском вкратце можно посмотреть Сценарии объектной модели документа DOM XML средствами OLE-Automation (http://www.script-coding.com/XMLDOMscripts.html).




© OSzone.net 2001-2012