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

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

Ответить
Настройки темы
CMD/BAT - [решено] Ping сети и действие в зависимости от результата, например запуск плеера

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


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

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


Изменения
Автор: Alex-_-
Дата: 20-04-2012
Хочу сделать скрипт, который бы пинговал сеть и в зависимости от результата пинга что-то делал, например запускал плеер. В итоге у меня получился скрипт такого плана:

:Line1
rem Пингуем сеть и записываем результат в лог
ping ... > ping.log
pause
rem проверяем, есть ли в результате типичное для удачного пинга слово TTL и присваиваем переменной р
for /F "delims=" %%p IN ('find /C /I "TTL" "C:\Users\user03\Desktop\ping.log"') DO (SET p=%%p)
rem если есть хотя бы одно совпадение - запускаем плеер, если нет - пингуем заново
IF p=="....(не знаю что присвоить)" Start "ring" /d "C:\Program Files\AIMP2\" "AIMP2.exe" /b ELSE goto Line1
pause

Все бы ничего, но результатом find становится не количество найденных строк, как хотелось бы, а уродливая строка вида
----------C:\USERS\USER03\DESKTOP\PING.LOG: 2
до последней цифры эта писанина мне нафиг не нужна, можно ли как-то присвоить не всю эту строку переменной р, а только последний символ???? Обыскал весь гугл на эту тему - не нашел((((

пытался в If поставить
IF NOT p=="---------- C:\USERS\USER03\DESKTOP\PING.LOG: 0 " Start "ring" /d "C:\Program Files\AIMP2\" "AIMP2.exe" /b ELSE goto Line1
чтобы обработать хотя бы такой вариант, но результат find - строка с пробелом и переводом на следующую строку, как это отобразить в условии?

Отправлено: 16:18, 20-04-2012

 


Moderator


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

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


Alex-_-, можно в одну строчку:
Код: Выделить весь код
Ping -n 1 имя_или_IP-адрес >nul && Start "ring" "%ProgramFiles%\AIMP2\AIMP2.exe"
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:52, 20-04-2012 | #2



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

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


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


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

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


Цитата Petya V4sechkin:
Alex-_-, можно в одну строчку:
Код:
Ping -n 1 имя_или_IP-адрес >nul && Start "ring" "C:\Program Files\AIMP2\AIMP2.exe" »
Спасибо большое, а я второй день долбаюсь...
>nul как я понял скрывает ошибку пинга, а && продолжает выполнение команды, если первая часть выполнена?

Тогда так можно еще зациклить, чтобы пинговало, пока связи нет, а как появится - запустить плеер и выходить, крутотенечка!!!

:Line1
Ping -n 1 [url] >nul && Start "ring" "C:\Program Files\AIMP2\AIMP2.exe" && Exit
goto Line1

Последний раз редактировалось Alex-_-, 20-04-2012 в 17:21.


Отправлено: 17:06, 20-04-2012 | #3


Ветеран


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

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


Цитата Alex-_-:
&& продолжает выполнение команды, если первая часть выполнена? »
Не совсем. «&&» означает, что следующая за ним команда выполнится при условии, если предыдущая команда вернёт нулевой код возврата (в терминах пакетных файлов — «errorlevel»).

Цитата Alex-_-:
Тогда так можно еще зациклить »
Код: Выделить весь код
:Line1
Ping -n 1 [url] >nul && (Start "ring" "C:\Program Files\AIMP2\AIMP2.exe" & Exit) || Ping -n 2 127.0.0.1 >nul 
goto Line1

Отправлено: 19:47, 20-04-2012 | #4


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


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

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


Цитата Iska:
Не совсем. «&&» означает, что следующая за ним команда выполнится при условии, если предыдущая команда вернёт нулевой код возврата (в терминах пакетных файлов — «errorlevel»). »
Насчет && точно, читал, на насчет пинга вроде вычитал, что никакой errorlevel он не возвращает, только если ошибка в синтаксисе команды

Отправлено: 12:34, 21-04-2012 | #5


Ветеран


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

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


Цитата Alex-_-:
на насчет пинга вроде вычитал, что никакой errorlevel он не возвращает, только если ошибка в синтаксисе команды »
Вполне возможно, что так оно когда-то было (или стало ). Но ведь можно и просто проверить. Откройте командную строку, и выполните:
Код: Выделить весь код
ping.exe -n 1 www.ya.ru && echo Ok || echo Failure
Код: Выделить весь код
ping.exe -n 1 bla.bla.bla && echo Ok || echo Failure

Отправлено: 14:03, 21-04-2012 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] запуск определенной комманды в зависимости от IP адреса Jeander Скриптовые языки администрирования Windows 12 16-09-2015 16:28
FAQ - [решено] Ping при использовании нестандартной маски сети. lxa85 Сетевые технологии 5 02-07-2008 11:49
Запуск LiveCD по сети AlexCorvis Автоматическая установка Windows 2000/XP/2003 2 19-03-2008 11:17
сохранение на странице результата поиска vagner_HATE Вебмастеру 3 05-06-2005 17:37
PING для диагностики сети Agey Сетевые технологии 5 09-09-2003 12:10




 
Переход