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

Ответить
Аватара пользователя
Alex-_-

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

Сообщение Alex-_- »

Хочу сделать скрипт, который бы пинговал сеть и в зависимости от результата пинга что-то делал, например запускал плеер. В итоге у меня получился скрипт такого плана:



: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 - строка с пробелом и переводом на следующую строку, как это отобразить в условии?
Аватара пользователя
Petya V4sechkin

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

Сообщение Petya V4sechkin »

Alex-_-, можно в одну строчку:



Код:

Код: Выделить всё

Ping -n 1 имя_или_IP-адрес >nul && Start "ring" "%ProgramFiles%\AIMP2\AIMP2.exe"
Аватара пользователя
Alex-_-

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

Сообщение Alex-_- »

Цитата Petya V4sechkin:



Alex-_-, можно в одну строчку:

Код:

Ping -n 1 имя_или_IP-адрес >nul && Start "ring" "C:\Program Files\AIMP2\AIMP2.exe"
CMD/BAT - [решено] Ping сети и действие в зависимости от результата, например запуск плеера




Спасибо большое, а я второй день долбаюсь...

>nul как я понял скрывает ошибку пинга, а && продолжает выполнение команды, если первая часть выполнена?



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



:Line1

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

goto Line1
Аватара пользователя
Iska

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

Сообщение Iska »

Цитата Alex-_-:



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




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




Цитата Alex-_-:



Тогда так можно еще зациклить
CMD/BAT - [решено] Ping сети и действие в зависимости от результата, например запуск плеера






Код:

Код: Выделить всё

: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
Аватара пользователя
Alex-_-

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

Сообщение Alex-_- »

Цитата Iska:



Не совсем. «&&» означает, что следующая за ним команда выполнится при условии, если предыдущая команда вернёт нулевой код возврата (в терминах пакетных файлов — «errorlevel»).
CMD/BAT - [решено] Ping сети и действие в зависимости от результата, например запуск плеера




Насчет && точно, читал, на насчет пинга вроде вычитал, что никакой errorlevel он не возвращает, только если ошибка в синтаксисе команды
Аватара пользователя
Iska

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

Сообщение Iska »

Цитата Alex-_-:



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




Вполне возможно, что так оно когда-то было (или стало Изображение). Но ведь можно и просто проверить. Откройте командную строку, и выполните:



Код:

Код: Выделить всё

ping.exe -n 1 www.ya.ru && echo Ok || echo Failure



Код:

Код: Выделить всё

ping.exe -n 1 bla.bla.bla && echo Ok || echo Failure
Ответить

Вернуться в «Скриптовые языки администрирования Windows»