Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


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

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


Думаю, это именно то, что вам нужно. Первый удачно пропингованный адрес пишется вместо текущего значения IP в 111.ini. Хочу заметить, что при таком способе чтения ini-файла, теряются [секции] и #; комментарии, если они у вас есть.
Я тестировал с ini-файлом такого вида:
Код: Выделить весь код
IP=127.0.0.1
Port=1234
Test1=111
Test2=222
А вот сам скрипт:
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
Set CfgFile=111.ini
Call :ReadCfg
Call :Pinger 192.168.5 192.168.8
Pause
Exit

:Pinger
If "%1"=="" Exit /B
For /L %%I In (1,1,254) Do (
	Ping -n 1 %1.%%I|Find /I "TTL=">nul&&(
		Set IP=%1.%%I
		Call :WriteCfg
		Exit /B
	)
)
Shift
GoTo Pinger


:: ==Чтение-запись в key-value файл c сохранением порядка строк=
:: Anonymous, 2011
:ReadCfg
If Not Exist %CfgFile% (Exit 1)
Set i=0
For /F "tokens=1,2 delims==" %%A In (%CfgFile%) Do (
	Set /A i+=1
	Set %%A=%%B
	Set CfgKey!i!=%%A
	Set CfgStrings=!i!
)
Exit /B

:WriteCfg
If Exist %CfgFile% (Del %CfgFile%)
For /L %%S In (1,1,%CfgStrings%) Do (
	Call :WriteSingleLine "!CfgKey%%S!"
)
Exit /B
:WriteSingleLine
Echo %~1=!%~1!>>%CfgFile%
Exit /B
:: =============================================================

Последний раз редактировалось Anonymоus, 06-01-2012 в 11:17.


Отправлено: 10:32, 06-01-2012 | #3