Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Изменить настройки в *.ini файле через *.bat

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

Пользователь


Сообщения: 63
Благодарности: 1

Профиль | Отправить PM | Цитировать


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

Server_address=XXX.XXX.XXX.XXX
Server_port=XXXX

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

Отправлено: 21:54, 29-04-2010

 

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 22:51, 29-04-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для BSDельник

Новый участник


Сообщения: 49
Благодарности: 4

Профиль | Отправить PM | Цитировать


Там только эти строки?

-------
Жизнь — это просто куча всякой фигни, которая происходит.


Отправлено: 01:45, 30-04-2010 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
>>file.ini ECHO Server_address=XXX.XXX.XXX.XXX
>>file.ini ECHO Server_port=XXXX

Отправлено: 03:16, 30-04-2010 | #4


Пользователь


Сообщения: 63
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата megaloman:
А насколько принципиально решение с помощью bat-файла, а, допустим, не с помощью VBS или JS скрипта? »
Нет, нужен именно батник.
Цитата BSDельник:
Там только эти строки? »
Нет, там есть еще и другие параметры...

amel27, спасибо, но данное решение мне не подойдет. Так как в том ини файле настройки поделены на секции такого вида:
Код: Выделить весь код
[Main]
Server_address=XXX.XXX.XXX.XXX
Server_port=XXXX

[Proxy]
Enabled=0
Address=
И так далее...
Если я значения адрес сервера и порт опускаю в самый низ, то они не работают.

Последний раз редактировалось CyberMaster, 30-04-2010 в 09:06.


Отправлено: 08:56, 30-04-2010 | #5


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата CyberMaster:
Если я значения адрес сервера и порт опускаю в самый низ, то они не работают. »
вместе со всей секцией "[Main]"?.. обычно порядок секций в INI не важен

Отправлено: 09:10, 30-04-2010 | #6


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 09:48, 30-04-2010 | #7


Пользователь


Сообщения: 63
Благодарности: 1

Профиль | Отправить PM | Цитировать


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

Цитата megaloman:
Запускаем батник, а в батнике VBS. Как вариант, пробовал в батнике построчно переписывать ини-файл в другой (идея была вырезать начала строк, анализировать их на равенство строк Server_address= и Server_port= и, при равенстве, цеплять туда новое значение после знака = ), но не очень надёжно получается, особенно если в ини-файле есть строки вида %ТраЛяЛя%. »
Можно подробнее? Не силен я в этих скриптах

Отправлено: 10:00, 30-04-2010 | #8


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата CyberMaster:
при каждом запуске батника, будут добавляться в конец файла новые строки »
это не причина, сделать "болванку", а батником ее копировать и добавлять в копию нужные строки

Отправлено: 12:36, 30-04-2010 | #9


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar ModiIn.rar
(906 байт, 176 просмотров)

Код: Выделить весь код
' -----------------------------------------------------------------------------------
' Скрипт считывает указанный полным путём текстовый файл (переменная 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
Исходник в файле

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:30, 30-04-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Изменить настройки в *.ini файле через *.bat

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - Что у Вас в файле Finish.ini для GUI интегратора? wolkow70 Наборы обновлений для Windows XP/2003/Windows 7 13 15-01-2011 02:07
[решено] Скрипт для удаления нужных слов в ini файле Pozia AutoIt 23 27-10-2009 18:42
Любой язык - Проверка сетевых ресурсов в BAT-файле chkur Скриптовые языки администрирования Windows 1 03-12-2008 12:39
Решено | Можно ли задать параметры в файле boot.ini пред инсталляцией? botvin Автоматическая установка Windows 2000/XP/2003 2 15-04-2006 02:46




 
Переход