Хочу сделать скрипт, который бы пинговал сеть и в зависимости от результата пинга что-то делал, например запускал плеер. В итоге у меня получился скрипт такого плана:
: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 - строка с пробелом и переводом на следующую строку, как это отобразить в условии?
CMD/BAT - [решено] Ping сети и действие в зависимости от результата, например запуск плеера
-
Petya V4sechkin
Re: CMD/BAT - [решено] Ping сети и действие в зависимости от результата, например запуск плеера
Alex-_-, можно в одну строчку:
Код:
Код:
Код: Выделить всё
Ping -n 1 имя_или_IP-адрес >nul && Start "ring" "%ProgramFiles%\AIMP2\AIMP2.exe"-
Alex-_-
Re: CMD/BAT - [решено] Ping сети и действие в зависимости от результата, например запуск плеера
Цитата 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-_-, можно в одну строчку:
Код:
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 сети и действие в зависимости от результата, например запуск плеера
Цитата Alex-_-:
&& продолжает выполнение команды, если первая часть выполнена?
Не совсем. «&&» означает, что следующая за ним команда выполнится при условии, если предыдущая команда вернёт нулевой код возврата (в терминах пакетных файлов — «errorlevel»).
Цитата 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 сети и действие в зависимости от результата, например запуск плеера
Цитата Iska:
Не совсем. «&&» означает, что следующая за ним команда выполнится при условии, если предыдущая команда вернёт нулевой код возврата (в терминах пакетных файлов — «errorlevel»).
Насчет && точно, читал, на насчет пинга вроде вычитал, что никакой errorlevel он не возвращает, только если ошибка в синтаксисе команды
Не совсем. «&&» означает, что следующая за ним команда выполнится при условии, если предыдущая команда вернёт нулевой код возврата (в терминах пакетных файлов — «errorlevel»).
CMD/BAT - [решено] Ping сети и действие в зависимости от результата, например запуск плеера
Насчет && точно, читал, на насчет пинга вроде вычитал, что никакой errorlevel он не возвращает, только если ошибка в синтаксисе команды
-
Iska
Re: CMD/BAT - [решено] Ping сети и действие в зависимости от результата, например запуск плеера
Цитата Alex-_-:
на насчет пинга вроде вычитал, что никакой errorlevel он не возвращает, только если ошибка в синтаксисе команды
Вполне возможно, что так оно когда-то было (или стало
). Но ведь можно и просто проверить. Откройте командную строку, и выполните:
Код:
Код:
на насчет пинга вроде вычитал, что никакой 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