_D_V_S_
16-03-2012, 11:18
Здравствуйте!
Подскажите плиз. Сам я в скриптах только начинающий :)
Наваял (по примерам с форумов) скрипт. Он заменяет значения функций в инишнике. Значение можно вводить самому. Но дело в том, что старое значение остаётся - оно следует после нововведённого.
То есть:
Имеем в файле строку:
max = 200
Нам надо чтобы строка приняла вид:
max = 100
(100 - произвольное значение, вводимое нами с помощью UserName=InputBox("Макс [max]","File.ext","ВВОДИТЕ"))
Вот операция замены:
strOldText = "max = "
strNewText = "max = "&UserName&""
strNewText = Replace(strText, strOldText, strNewText)
Строка принимает вид:
max = 100 200
Где max - функция, 100 - нововведённое значение, 200 - старое значение.
Далее к примеру нам надо поменять значение max на 50.
Строка принимает вид:
max = 50 100 200
И строка пухнет... Я нашел выход только с комментарием ";"
strNewText = "max = "&UserName&" ;"
Строка принимает вид:
max = 50 ;100 ;200
Хоть и - работает программа с таким инишником... Но это совсем не дело :(
Я совсем новичок в VBS. Прошу помощи.
Сам скрипт:
Dim fso
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("File.ext", ForReading)
UserName=InputBox("Макс [max]","File.ext","ВВОДИТЕ") '
strText = objFile.ReadAll
objFile.Close
strOldText = "max = "
strNewText = "max = "&UserName&" ;"
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile("File.ext", ForWriting)
objFile.WriteLine strNewText
objFile.Close
'Dim fso
'Const ForReading = 1
'Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("File.ext", ForReading)
UserName=InputBox("Макс1 [max1]","File.ext","ВВОДИТЕ") '
strText = objFile.ReadAll
objFile.Close
strOldText = "max1 = "
strNewText = "max1 = "&UserName&" ;"
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile("File.ext", ForWriting)
objFile.WriteLine strNewText
objFile.Close
Тут в конце строки
strNewText = "max1 = "&UserName&" ;"
";" это комментарий.
Программа не воспринимает закомментированное старое значение. Иного выхода борьбы со следами старых значений не нашёл...
Но хоть что-то :) Только вот плодятся эти комментарии после каждого введённого значения. Строка распухает.
Мысли:
1) Использовать для поиска регулярные выражения. Убейте - не понимаю, как сделать реплейс на инпутбокс в них...
2) Сначала удалить найденную строку, а потом на её место записать "max1 = "&UserName&". Не нашёл как удалять строчки...
3) Закомментировать найденную строку, а потом на следующую строку записать "max1 = "&UserName&". Файл распухнет теперь построчно...
4) Мысль работать с копией файла. То есть с самого начала создаётся копия файла в каком-нмбуль каталоге, и при каждом изменении - удаляется текущий файл а на его место копируется мастер-копия и все операции проводятся с ней.
//То есть:
4-0) создаём папку "BackUp"
4-1) копируем туда File.Ext
4-2) удаляем исходный File.Ext
4-3) копируем из BackUp File.ext обратно
4-4) конец операции
Вопрос: как можно сие провернуть?
Подскажите плиз. Сам я в скриптах только начинающий :)
Наваял (по примерам с форумов) скрипт. Он заменяет значения функций в инишнике. Значение можно вводить самому. Но дело в том, что старое значение остаётся - оно следует после нововведённого.
То есть:
Имеем в файле строку:
max = 200
Нам надо чтобы строка приняла вид:
max = 100
(100 - произвольное значение, вводимое нами с помощью UserName=InputBox("Макс [max]","File.ext","ВВОДИТЕ"))
Вот операция замены:
strOldText = "max = "
strNewText = "max = "&UserName&""
strNewText = Replace(strText, strOldText, strNewText)
Строка принимает вид:
max = 100 200
Где max - функция, 100 - нововведённое значение, 200 - старое значение.
Далее к примеру нам надо поменять значение max на 50.
Строка принимает вид:
max = 50 100 200
И строка пухнет... Я нашел выход только с комментарием ";"
strNewText = "max = "&UserName&" ;"
Строка принимает вид:
max = 50 ;100 ;200
Хоть и - работает программа с таким инишником... Но это совсем не дело :(
Я совсем новичок в VBS. Прошу помощи.
Сам скрипт:
Dim fso
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("File.ext", ForReading)
UserName=InputBox("Макс [max]","File.ext","ВВОДИТЕ") '
strText = objFile.ReadAll
objFile.Close
strOldText = "max = "
strNewText = "max = "&UserName&" ;"
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile("File.ext", ForWriting)
objFile.WriteLine strNewText
objFile.Close
'Dim fso
'Const ForReading = 1
'Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("File.ext", ForReading)
UserName=InputBox("Макс1 [max1]","File.ext","ВВОДИТЕ") '
strText = objFile.ReadAll
objFile.Close
strOldText = "max1 = "
strNewText = "max1 = "&UserName&" ;"
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile("File.ext", ForWriting)
objFile.WriteLine strNewText
objFile.Close
Тут в конце строки
strNewText = "max1 = "&UserName&" ;"
";" это комментарий.
Программа не воспринимает закомментированное старое значение. Иного выхода борьбы со следами старых значений не нашёл...
Но хоть что-то :) Только вот плодятся эти комментарии после каждого введённого значения. Строка распухает.
Мысли:
1) Использовать для поиска регулярные выражения. Убейте - не понимаю, как сделать реплейс на инпутбокс в них...
2) Сначала удалить найденную строку, а потом на её место записать "max1 = "&UserName&". Не нашёл как удалять строчки...
3) Закомментировать найденную строку, а потом на следующую строку записать "max1 = "&UserName&". Файл распухнет теперь построчно...
4) Мысль работать с копией файла. То есть с самого начала создаётся копия файла в каком-нмбуль каталоге, и при каждом изменении - удаляется текущий файл а на его место копируется мастер-копия и все операции проводятся с ней.
//То есть:
4-0) создаём папку "BackUp"
4-1) копируем туда File.Ext
4-2) удаляем исходный File.Ext
4-3) копируем из BackUp File.ext обратно
4-4) конец операции
Вопрос: как можно сие провернуть?