Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скрипт на VBS на проверку содержимого файла и его замене (http://forum.oszone.net/showthread.php?t=324299)

ospekt00 28-02-2017 13:28 2715366

Скрипт на VBS на проверку содержимого файла и его замене
 
Добрый день уважаемы Форумчане, помогите пожалуйста со скриптом на 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 2715369

Цитата:

Цитата ospekt00
файл - C:\prog\test1.xml »

Образец файла упакуйте в архив и приложите к сообщению.

Цитата:

Цитата ospekt00
то нужно заменить данный файл (C:\prog\test1.xml) файлом - D:\waq\test_new.xml . »

А может есть вариант проще — что-то заменить/удалить внутри существующего, не?

ospekt00 28-02-2017 13:56 2715374

Вложений: 1
  • test1.zip (315 bytes, скачиваний: 17)
Вот архив с файлом, нет к сожалению нужно именно заменять файл на тот который лежит на диске D:\.
Заранее Благодарю.

Iska 28-02-2017 14:20 2715376

Гмм… А почему Вы его обозвали 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 2715391

Огромное Вам спасибо, скрипт работает, но я неправильно поставил задачу немного)),
я написал:
Цитата:

Цитата ospekt00
Если есть строка содержащая данный тег, то нужно заменить данный файл (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 2715395

Задать запрос в Google вида «vbscript xml» и посмотреть несколько первых ссылок. На русском вкратце можно посмотреть Сценарии объектной модели документа DOM XML средствами OLE-Automation.


Время: 22:38.

Время: 22:38.
© OSzone.net 2001-