Показать полную графическую версию : пинг группы адресов и запись первого удачного в файл в конкретное место.
имеем
192.168.5.1-254
192.168.8.1-254
первый ответивший записываем в файл 111.ini на место 192.168.?.?
111.ini имет вид
IP=192.168.?.?
Port=1234
и т.д.
вообщем сам пока не сильно разбираюсь во всем этом деле, но могу предложить этот вариант:
@echo off
set s=0
set p=5
:start_1
set /a s=%s%+1
if %s%==255 goto next_ip
ping -n 1 -l 5 10.108.%p%.%s%|Find /I "TTL="|| goto start_1
goto read
:next_ip
set s=0
set p=8
:start_2
set /a s=%s%+1
ping -n 1 -l 5 192.168.%p%.%s%|Find /I "TTL="|| goto start_2
if %s%==255 exit
:read
echo fName = "111.ini" >temp.vbs
echo iStrok = 1 >>temp.vbs
echo repTxt = "IP=192.168.%p%.%s%" >>temp.vbs
copy temp.vbs + chang.vbs
start/wait temp.vbs
del temp.vbs
exit
для замены ip в файле 111.ini использовал скрипт chang.vbs скачать его можно здесь (http://wf5.ru/W6aIm9)
если ссылка не сработает, то вот код из скрипта
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.OpenTextFile(fName, 1, False)
AllTxt = F.ReadAll()
F.Close
AllTxt = Replace(AllTxt, vbLf, "")
Mas = Split(AllTxt, vbCr)
nStrok = UBound(Mas)
AllTxt = ""
If nStrok + 1 >= iStrok Then
Mas(iStrok - 1) = repTxt
For i = 0 To nStrok
If i <> nStrok Then
AllTxt = AllTxt + Mas(i) + vbCrLf
Else
AllTxt = AllTxt + Mas(i)
End If
Next
Set F = FSO.OpenTextFile(fName, 2, False)
F.Write AllTxt
F.Close
End If
Anonymоus
06-01-2012, 10:32
Думаю, это именно то, что вам нужно. Первый удачно пропингованный адрес пишется вместо текущего значения 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
:: =============================================================
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.