|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - пинг группы адресов и запись первого удачного в файл в конкретное место. |
|
CMD/BAT - пинг группы адресов и запись первого удачного в файл в конкретное место.
|
Новый участник Сообщения: 12 |
имеем
192.168.5.1-254 192.168.8.1-254 первый ответивший записываем в файл 111.ini на место 192.168.?.? 111.ini имет вид IP=192.168.?.? Port=1234 и т.д. |
|
Отправлено: 21:37, 03-12-2011 |
Старожил Сообщения: 263
|
Профиль | Отправить PM | Цитировать вообщем сам пока не сильно разбираюсь во всем этом деле, но могу предложить этот вариант:
@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 если ссылка не сработает, то вот код из скрипта 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 |
Последний раз редактировалось zion87, 06-01-2012 в 12:10. Отправлено: 04:33, 06-01-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Думаю, это именно то, что вам нужно. Первый удачно пропингованный адрес пишется вместо текущего значения IP в 111.ini. Хочу заметить, что при таком способе чтения ini-файла, теряются [секции] и #; комментарии, если они у вас есть.
Я тестировал с ini-файлом такого вида: А вот сам скрипт: @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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочее - SMTP validation адресов группы рассылки не работает | Riiku | Microsoft Exchange Server | 0 | 21-03-2011 12:22 | |
Прочее - У 2х компьютеров отсутствует пинг, не видят рабочей группы.. | Netman | Сетевые технологии | 8 | 23-01-2010 23:58 | |
Интерфейс - [решено] Учётная запись администратора уходит на 2-е место | united | Microsoft Windows 2000/XP | 3 | 08-01-2008 16:17 | |
Сеть: 3 компа, есть пинг но не видят раб.группы | Duka_minimo | Сетевые технологии | 4 | 06-03-2007 18:02 | |
Один свитч на две группы IP адресов | SergOst | Сетевые технологии | 3 | 27-07-2004 17:53 |
|