PDA

Показать полную графическую версию : [решено] Можно ли как-то выдавать звуковой сигнал по достижении пинга?


nikhop
06-08-2019, 03:25
Есть батник ping 192.168.1.1 -t, при достижении КАЖДОГО пинга хочется слышать сигнал в колонки.
Если пинга нет, то звучат не должно. Это возможно?

Где-то вычитал, что можно использовать echo , но не знаю, как конкретно это реализовать.

Iska
06-08-2019, 05:14
Это возможно? »
Разумеется — нет. Вам некуда вставить вызов сигнала, поскольку у Вас просто бесконечно выполняется приложение.

Единственный вариант, который я вижу — отказаться от использования параметра -t и реализовать ручное зацикливание, наподобие:
@echo off
setlocal enableextensions enabledelayedexpansion

:Repeat
2>nul ping.exe -w 1000 -n 1 192.168.1.1 | >nul find.exe /i "TTL=" && <nul set /p sVar=.

>nul timeout.exe /t 1 /nobreak
goto :Repeat

endlocal
exit /b 0

В команде set /p между символами «=» и «.» находится символ с кодом 0x07, он же BELL.

ping 192.168.1.1 -t, при достижении КАЖДОГО пинга хочется слышать сигнал в колонки. »
От каждого — боюсь, что оглохнете :).

nikhop
06-08-2019, 05:17
От каждого — боюсь, что оглохнете »
Да не, норм )
Спасибо большое!

Iska, аа, блин, он пищалку использует..? Я удаленно не слышу сигнал.. Печаль-тоска.

Elven
06-08-2019, 09:17
nikhop, можно и в колонки
@echo off
setlocal enableextensions enabledelayedexpansion

:Repeat
2>nul ping.exe -w 1000 -n 1 8.8.8.8 | >nul find.exe /i "TTL=" && powershell -c (New-Object Media.SoundPlayer 'c:\Windows\Media\ding.wav').PlaySync()

>nul timeout.exe /t 1 /nobreak
goto :Repeat

endlocal
exit /b 0

Iska
06-08-2019, 12:49
Iska, аа, блин, он пищалку использует..? Я удаленно не слышу сигнал.. Печаль-тоска. »
Лично у меня писк идёт через колонки. Проверьте на той машине состояние службы:
sc.exe query beep
и убедитесь, что символ BELL у Вас нормально скопировался и вставился:
https://i.imgur.com/vRTBMcr.png

Elven, лучше целиком сделать на PowerShell, поскольку постоянный вызов самого PowerShell в цикле может оказаться накладным.

Elven
06-08-2019, 13:29
Iska, язык-то указан cmd/bat, а так - пожалуйста.
WHILE ($true) {
if (Test-NetConnection -InformationLevel Quiet 8.8.8.8) {
(New-Object Media.SoundPlayer 'c:\Windows\Media\ding.wav').PlaySync()
Start-Sleep 1
}
}


А теперь руки начинают чесаться превратить это в функцию, запихнуть в папку с модулями и раздражать коллег пингом при каждой нужности.

Iska
06-08-2019, 13:51
Elven, я и здесь придерусь — объект Media.SoundPlayer лучше создать один раз за пределами цикла, а внутри — только использовать его.

А теперь руки начинают чесаться превратить это в функцию, запихнуть в папку с модулями и раздражать коллег пингом при каждой нужности. »
:).

Elven
06-08-2019, 14:42
Так?
$sound = New-Object Media.SoundPlayer 'c:\Windows\Media\ding.wav'

WHILE ($true) {
if (Test-NetConnection -InformationLevel Quiet 8.8.8.8) {
$sound.PlaySync()
Start-Sleep 1
}
}

Iska
06-08-2019, 15:25
Elven, ага.

nikhop
07-08-2019, 03:33
sc.exe query beep »
Подключаюсь удалённо через TeamViewer, пинги всё равно не слышны, хотя на месте через колонки звук есть. А другие звуки удалённо слышу, например, включая музыку.

Попробовал Ваш скрипт powershell, вылазит следующее: https://yadi.sk/i/f70t4_2vzWFq3g

В общем, если обобщить задачу, мне нужно удалённо подключаться к машине, которая пингуюет другую машину в локальной в сети, и издаёт звук при каждом удачном пинге.
Каким это образом будет реализовано, в принципе, без разницы. Главное быстро запустить, быстро закрыть )

Iska
07-08-2019, 05:31
nikhop, сочувствую. У TeamViewer'а всегда хватало проблем с воспроизведением удалённого аудио.

Попробовал Ваш скрипт powershell, вылазит следующее: https://yadi.sk/i/f70t4_2vzWFq3g »
Версия ОС на удалённой машине?

Попробуйте заменить командлет Test-NetConnection командлетом Test-Connection:

if (Test-Connection -ComputerName 192.168.1.1 -Count 1 -Quiet) {




© OSzone.net 2001-2012