|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Изменить настройки в *.ini файле через *.bat |
|
CMD/BAT - Изменить настройки в *.ini файле через *.bat
|
Пользователь Сообщения: 63 |
Помогите пожалуйста сделать батник, изменяющий настройки в *.ini файле.
Есть файл file.ini в нем есть такие стороки: Server_address=XXX.XXX.XXX.XXX Server_port=XXXX Как с помощью *.bat файла изменить значения адреса сервера и порта? P.s текущее значения в ини файле не постоянные. То есть они могут меняться. |
|
Отправлено: 21:54, 29-04-2010 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать А насколько принципиально решение с помощью bat-файла, а, допустим, не с помощью VBS или JS скрипта?
|
------- Отправлено: 22:51, 29-04-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать Там только эти строки?
|
------- Отправлено: 01:45, 30-04-2010 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 03:16, 30-04-2010 | #4 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата BSDельник:
amel27, спасибо, но данное решение мне не подойдет. Так как в том ини файле настройки поделены на секции такого вида: Если я значения адрес сервера и порт опускаю в самый низ, то они не работают. |
|||
Последний раз редактировалось CyberMaster, 30-04-2010 в 09:06. Отправлено: 08:56, 30-04-2010 | #5 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата CyberMaster:
|
|
Отправлено: 09:10, 30-04-2010 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Запускаем батник, а в батнике VBS. Как вариант, пробовал в батнике построчно переписывать ини-файл в другой (идея была вырезать начала строк, анализировать их на равенство строк Server_address= и Server_port= и, при равенстве, цеплять туда новое значение после знака = ), но не очень надёжно получается, особенно если в ини-файле есть строки вида %ТраЛяЛя%.
![]() |
------- Отправлено: 09:48, 30-04-2010 | #7 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать amel27, в любом случае не подойдет
![]() Цитата megaloman:
![]() |
|
Отправлено: 10:00, 30-04-2010 | #8 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата CyberMaster:
|
|
Отправлено: 12:36, 30-04-2010 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать ' ----------------------------------------------------------------------------------- ' Скрипт считывает указанный полным путём текстовый файл (переменная 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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Система - Что у Вас в файле 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 |
|