CMD/BAT - Изменить настройки в *.ini файле через *.bat

Аватара пользователя
CyberMaster

CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение CyberMaster »

Помогите пожалуйста сделать батник, изменяющий настройки в *.ini файле.

Есть файл file.ini в нем есть такие стороки:



Server_address=XXX.XXX.XXX.XXX

Server_port=XXXX



Как с помощью *.bat файла изменить значения адреса сервера и порта?

P.s текущее значения в ини файле не постоянные. То есть они могут меняться.
Аватара пользователя
megaloman

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение megaloman »

А насколько принципиально решение с помощью bat-файла, а, допустим, не с помощью VBS или JS скрипта?
Аватара пользователя
Georgio

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение Georgio »

KDash, я не редактирую чужие коды, а пишу свои. Уточните постановку задачи и прикрепите архив с Вашим текстовым файлом к сообщению.
Аватара пользователя
Iska

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение Iska »

CyberMaster, проще всего перенести эту секцию в конец файла, и добалять изменяемые строки непосредственно перед применением INI-файла:





Код:

Код: Выделить всё

>>file.ini ECHO Server_address=XXX.XXX.XXX.XXX
>>file.ini ECHO Server_port=XXXX
Аватара пользователя
megaloman

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение megaloman »

Цитата megaloman:



А насколько принципиально решение с помощью bat-файла, а, допустим, не с помощью VBS или JS скрипта?
CMD/BAT - Изменить настройки в *.ini файле через *.bat




Нет, нужен именно батник.


Цитата BSDельник:



Там только эти строки?
CMD/BAT - Изменить настройки в *.ini файле через *.bat




Нет, там есть еще и другие параметры...



amel27, спасибо, но данное решение мне не подойдет. Так как в том ини файле настройки поделены на секции такого вида:



Код:

Код: Выделить всё

[Main]
Server_address=XXX.XXX.XXX.XXX
Server_port=XXXX
[Proxy]
Enabled=0
Address=
И так далее...

Если я значения адрес сервера и порт опускаю в самый низ, то они не работают.
Аватара пользователя
BSDельник

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение BSDельник »

Цитата CyberMaster:



Если я значения адрес сервера и порт опускаю в самый низ, то они не работают.
CMD/BAT - Изменить настройки в *.ini файле через *.bat




вместе со всей секцией "[Main]"?.. обычно порядок секций в INI не важен
Аватара пользователя
CyberMaster

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение CyberMaster »

Запускаем батник, а в батнике VBS. Как вариант, пробовал в батнике построчно переписывать ини-файл в другой (идея была вырезать начала строк, анализировать их на равенство строк Server_address= и Server_port= и, при равенстве, цеплять туда новое значение после знака = ), но не очень надёжно получается, особенно если в ини-файле есть строки вида %ТраЛяЛя%. Изображение
Аватара пользователя
amel27

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение amel27 »

amel27, в любом случае не подойдет Изображение Так как при каждом запуске батника, будут добавляться в конец файла новые строки.




Цитата megaloman:



Запускаем батник, а в батнике VBS. Как вариант, пробовал в батнике построчно переписывать ини-файл в другой (идея была вырезать начала строк, анализировать их на равенство строк Server_address= и Server_port= и, при равенстве, цеплять туда новое значение после знака = ), но не очень надёжно получается, особенно если в ини-файле есть строки вида %ТраЛяЛя%.
CMD/BAT - Изменить настройки в *.ini файле через *.bat




Можно подробнее? Не силен я в этих скриптах Изображение
Аватара пользователя
megaloman

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение megaloman »

Цитата CyberMaster:



при каждом запуске батника, будут добавляться в конец файла новые строки
CMD/BAT - Изменить настройки в *.ini файле через *.bat




это не причина, сделать "болванку", а батником ее копировать и добавлять в копию нужные строки
Аватара пользователя
CyberMaster

Re: CMD/BAT - Изменить настройки в *.ini файле через *.bat

Сообщение CyberMaster »

Код:

Код: Выделить всё

' -----------------------------------------------------------------------------------
' Скрипт считывает указанный полным путём текстовый файл (переменная InName)
' В файле ищется первое вхождение каждой из двух подстрок (переменная Str1 и Str2)
'	(эти подстроки должны быть в начале строки без лидирующих пробелов!)
' Найденная строки заменяются на строки соответственно вида Str1+EqStr1	и Str2+EqStr2
' Строки EqStr1	и EqStr2 передаются в аргументах скрипта
' Полученный результат запис на место старого файла
' -----------------------------------------------------------------------------------
' Пример использования из командной строки
' H:\Delete\ModiIn.vbs "123.456.789.012" "3456"
' -----------------------------------------------------------------------------------
    InName = "H:\Delete\kuku.txt"
    Str1 = "Server_address="
    Str2 = "Server_port="
    Set InArg=WScript.Arguments
    EqStr1 = InArg(0)
    EqStr2 = InArg(1)
'    EqStr1 = "111.222.333.444"
'    EqStr2 = "5555"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set InFile = FSO.OpenTextFile(InName, 1, False)
    AllStr = InFile.ReadAll
    InFile.Close
    AllStr = Replace(AllStr, Chr(10), "")
    Mass = Split(AllStr, Chr(13))
    i1 = LBound(Mass)
    i2 = UBound(Mass)
    Call ModiIniSub(Mass, i1, i2, Str1, EqStr1)
    Call ModiIniSub(Mass, i1, i2, Str2, EqStr2)
    Set InFile = FSO.OpenTextFile(InName, 2, False)
    For i = i1 To i2
        If i  i2 Then
            InFile.WriteLine Mass(i)
        Else
            InFile.Write Mass(i)
        End If
    Next
    InFile.Close
Sub ModiIniSub(Mass, i1, i2, Stroka, EqStroka)
    LStroka = Len(Stroka)
    For i = i1 To i2
        If Mid(Mass(i), 1, LStroka) = Stroka Then
            Mass(i) = Stroka + EqStroka
            Exit For
        End If
    Next
End Sub

Исходник в
файле
Ответить

Вернуться в «Скриптовые языки администрирования Windows»