Показать полную графическую версию : [решено] VBS скрип по редактированию .ORA файла
ospekt00
26-05-2017, 08:06
Добрый день Форумчане, есть такой вопрос, можно ли на VBS открыть файл .ORA (в частности listener.ora файл с настройками базы данных oracle XE), сам данный файл можно открыть и отредактировать блокнотом, нужно его открыть и дописать в конец файла некое содержимое. Как это можно сделать на VBS???
Файл есть во вложении.
greg zakharov
26-05-2017, 09:33
дописать в конец файла некое содержимоеВидимо айпишник хоста и имя БД...
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFile : Set objFile = objFSO.OpenTextFile("listner.ora", 8, False)
objFile.Write "blablabla"
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
ospekt00
26-05-2017, 10:24
Спасибо за ответ, а можно ли дописать что то после определенной строки, например после 8 строки от начала файла?
greg zakharov
26-05-2017, 10:35
Инжекта строки "на лету", насколько помню, в Васе нет, но это можно преодолеть, скажем, считав файл целиком и разбив его на массив строк с последующей "вставкой" в него нужной строки.
ospekt00
26-05-2017, 10:38
Можете показать пример того как это можно сделать?
Заранее благодарю!
а можно ли дописать что то после определенной строки, »
Дописывать отдельной строкой?
например после 8 строки от начала файла? »
Как быть, если строк окажется только, скажем, пять?
ospekt00
26-05-2017, 10:59
В данном файле listener.ora строк 23, вообще нужно дописать после 12 строки еще 6 строк. Можно было бы файл заменять полностью, файлом с нужным содержимым, но так как ПК с такими файлами много и имена ПК все разные то либо дописывать нужное после определенной строки, ли переписывать файл полность и по том в нужном месте еще заменять инфу с именем ПК.
greg zakharov
26-05-2017, 15:16
Можете показать пример того как это можно сделать?Честно, Васю практически не использовал, в основном налегал на JScript, решение на котором будет примерно таким:
with (new ActiveXObject('Scripting.FileSystemObject')) {
var file = OpenTextFile('E:\\oracle\\admin\\network\\listner.ora', 1, false),
arr = file.ReadAll().split('\r\n'),
ins = [
'\nстроки, которые должны быть вставлены',
'могут быть представлены либо в виде',
'массива строк, либо в виде JSON\n'
].join('\n'),
res = arr.slice(0, 3).join('\n') + ins +
arr.slice(3, arr.length).join('\n');
file.Close();
file = OpenTextFile('E:\\oracle\\admin\\network\\listner.ora', 2, false);
file.Write(res);
file.Close();
}
Выглядит не очень эстетично, но Вам же пример нужен, а не выхоленный код, верно? Здесь вставка идет начиная с третьей строки. Если будут вопросы, отвечу как освобожусь.
ospekt00
26-05-2017, 15:45
Всем большое спасибо за помощь, данную проблему решил заменой файла и далее заменой имени в файле который скопировал на имя ПК.
Получилось что то вот такое:
Dim fso
Const OverWriteFiles = True
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
lsaptPathx = "c:\bat1"
lsoraPathx = "c:\bat"
FSO.CopyFile (lsaptPathx) , (lsoraPathx) & "\", OverWriteFiles
dim objnet
Set objnet = wscript.CreateObject("wscript.network")
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFileLis = objFSO.OpenTextFile("c:\BAT\listener.ora", ForReading)
strText = objFileLis.ReadAll
objFileLis.Close
strOldText = "pcbd"
strNewText = objNet.ComputerName
strNewText = Replace(strText, strOldText, strNewText)
Set objFileLis = objFSO.OpenTextFile("c:\BAT\listener.ora", ForWriting)
objFileLis.WriteLine strNewText
objFileLis.Close
'**************************************************
Выглядит не очень эстетично, »
Зато дёшево надёжно и практично! - YouTube (https://www.youtube.com/watch?v=8xM1IVaZwcs) :).
На самом деле вполне себе эстетично.
res = arr.slice(0, 3).join('\n') + ins +
arr.slice(3, arr.length).join('\n');
»
выглядит вполне понятно и наглядно — берём три первых строки, «клеим» к ним вставку, к полученному «клеим» остаток строк.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.