Как играть крошечный звук каждый раз, когда есть вывод в командной строке

Это новый вызов, я хочу, чтобы командная строка Windows 10 или окно PowerShell воспроизводили очень короткий "тиковый" звук, как в кино, каждый раз, когда в командном окне печатается новая строка, независимо от того, является ли она прямой. в команде или в среде, скажем, >>> python, я хочу, чтобы она отмечалась галочкой, каждый раз, когда выводится новая строка, независимо от того, какое приложение запускается внутри cmd.

Прелесть всего этого в том, что вы можете легко сделать это в терминалах Linux. Есть идеи, как это сделать для Widnows 10?

Спасибо ребята

1 ответ

Решение

Воспроизвести звук в PS так же просто, как сделать это...

# this
"`a" 

# or this basic tone
[console]::beep(1000, 500)

Измените значение первого числа, чтобы изменить высоту тона (ничего ниже 190 или выше, чем 8500, не будет слышно), и измените значение второго числа, чтобы изменить длительность:

# Or this
[System.Media.SystemSounds]::Beep.Play()

Затем свяжите это с выходным кодом. Для внешнего exe-файла в PS вы должны написать код для получения выходных данных, используя перенаправление PS.

Используйте любой инструмент, который вы выберете, чтобы создать звук, который хотите воспроизвести. Конечно, это должно быть на всех системах, на которых вы планируете запускать свой код.

1..3 | %{
    'Play a sound'
    [console]::beep(1000, 500)
}

Обновление для ОП

Не волнуйтесь.

Что касается (1) - вам просто нужно добавить звуковую линию до или после ожидаемого вывода текста, как в показанном примере цикла.
Что касается (2), это далеко не так гибко. Вы можете использовать CRTL+G в файле.bat/.cmd и вызывать его до или после ожидаемой строки вывода.

Тем не менее, опять же, вам придется кодировать, чтобы перехватить весь вывод, который вы ищете. Воспроизведение файлов WAV означает вызов медиаплеера в вашем коде, особенно для cmd.exe.

# PowerShell playing a wav file
$PlayWav=New-Object System.Media.SoundPlayer
$PlayWav.SoundLocation='C:\Foo\Soundfile.wav'
$PlayWav.playsync()

# CMD playing a wav file
start 'C:\Foo\Soundfile.wav'

Вот реальная проблема с воспроизведением файлов.wav или с чем-то, выходящим за пределы обычных звуковых сигналов консоли, медиаплеер будет вызываться каждый раз и должен отображаться для воспроизведения файла и должен быть закрыт. Не очень автоматизированная вещь..

Итак, ИМХО за то, что вы после придерживаетесь родной консоли, звучит.

Другие вопросы по тегам