1 (изменено: Arigato, 2025-09-06 15:36:14)

Тема: CMD/BAT: звуки (3 разных + бонус: сигнал SOS)

Два примера, как вывести звук из батника:

@ echo off
setlocal enabledelayedexpansion

pause
echo Звуковой сигнал №1
call :beep1

pause
echo Звуковой сигнал №2
call :beep2

exit /b

:: Звуковой сигнал через символ с кодом 7 (Alt + 07)
:beep1
setlocal
0<nul set /p =[BEL]
endlocal & exit /b

:: Звуковой сигнал через choice
:beep2
echo 0y | choice /c y /n>nul
exit /b

[BEL] - это непечатный символ с кодом 7. В форум его вставить нельзя, так что работающий пример качайте из вложения.

Подпрограмма beep1 выводит звук через символ с кодом 7.
Подпрограмма beep2 выводит звук через команду choice.

Не факт что везде будет работать, не проверял, но у меня оба метода работают и звуки разные.

Сигнал SOS

А вот и пример реализации сигнала SOS через звуки и мигание экраном:

@ echo off
setlocal enabledelayedexpansion

cls
title Сигнал SOS

:sos
call :M_S
call :M_O
call :M_S
call :pause 2
echo.
goto sos

exit /b

:: O: ---
:M_O
call :dash
call :dash
call :dash
exit /b

:: S: ...
:M_S
call :dot
call :dot
call :dot
exit /b

:: Точка (Морзе)
:dot
setlocal
0<nul set /p =.
color f0
call :beep2
color 07
endlocal & exit /b

:: Тире (Морзе)
:dash
setlocal
0<nul set /p =-
color f0
call :beep2
call :pause
color 07
endlocal & exit /b

:: Звуковой сигнал через choice
:beep2
echo 01 | choice /c 1 /n>nul
exit /b

:: Задержка в сек (0 - короткая задержка)
:pause
setlocal
set t=%1
if "%t%"=="" set t=0
timeout /t %t% >nul
endlocal & exit /b

Так как звук подается вызовом подпрограммы beep2, которая работает через choice, то и непечатных символов тут нет. Можно копировать код прямо с форума.

Post's attachments

beep.cmd 320 b, 1 downloads since 2025-09-06 

You don't have the permssions to download the attachments of this post.

2

Re: CMD/BAT: звуки (3 разных + бонус: сигнал SOS)

Еще один вариант воспроизвести звук, причем произвольный:

powershell -c "[console]::beep(800,200)"

800 - частота в Гц (от 37 до 32767).
200 - продолжительность в мс (от 1).

3

Re: CMD/BAT: звуки (3 разных + бонус: сигнал SOS)

А нормальную музыку набибикать можно?

( 2 * b ) || ! ( 2 * b )

4 (изменено: Arigato, 2025-09-17 16:36:37)

Re: CMD/BAT: звуки (3 разных + бонус: сигнал SOS)

Можно. Вот вариант более "батниковский":

@echo off
echo Playing Чижик-пыжик...
:loop

rem Play Music
call :beep 659 300
call :beep 587 300
call :beep 523 300
call :beep 587 300
call :beep 659 300
call :beep 659 300
call :beep 659 600
call :beep 587 300
call :beep 587 300
call :beep 587 600
call :beep 659 300
call :beep 784 300
call :beep 784 600
call :beep 659 300
call :beep 587 300
call :beep 523 300
call :beep 587 300
call :beep 659 300
call :beep 659 300
call :beep 659 300
call :beep 659 300
call :beep 587 300
call :beep 587 300
call :beep 659 300
call :beep 587 600
call :beep 523 900

timeout /t 1 /nobreak >nul
goto loop

:: Бипер
:: %1 - частота в Гц (от 37 до 32767)
:: %2 - продолжительность в мс (от 1)
:beep
powershell -c "[console]::beep(%1,%2)"
exit /b

А вот более читерский, но зато играет с меньшими задержками между нотами:

@echo off
echo Playing Чижик-пыжик...
:loop

rem Play Music
powershell -c ^
"$notes = @(^
    [tuple]::Create(659,300),^
    [tuple]::Create(587,300),^
    [tuple]::Create(523,300),^
    [tuple]::Create(587,300),^
    [tuple]::Create(659,300),^
    [tuple]::Create(659,300),^
    [tuple]::Create(659,600),^
    [tuple]::Create(587,300),^
    [tuple]::Create(587,300),^
    [tuple]::Create(587,600),^
    [tuple]::Create(659,300),^
    [tuple]::Create(784,300),^
    [tuple]::Create(784,600),^
    [tuple]::Create(659,300),^
    [tuple]::Create(587,300),^
    [tuple]::Create(523,300),^
    [tuple]::Create(587,300),^
    [tuple]::Create(659,300),^
    [tuple]::Create(659,300),^
    [tuple]::Create(659,300),^
    [tuple]::Create(659,300),^
    [tuple]::Create(587,300),^
    [tuple]::Create(587,300),^
    [tuple]::Create(659,300),^
    [tuple]::Create(587,600),^
    [tuple]::Create(523,900)^
);^
foreach ($note in $notes) {[console]::beep($note.Item1, $note.Item2)}"

timeout /t 1 /nobreak >nul
goto loop

P.S. Еще по ссылке Имитация сообщения азбукой Морзе пример более качественной имитации азбуки Морзе.

5

Re: CMD/BAT: звуки (3 разных + бонус: сигнал SOS)

Ни на что не претендую. Просто мой вклад в идею )))


@echo off

findstr "^[0-9][0-9]*,[0-9][0-9]*$" "%~f0" | powershell -c "$input | %% { $a = $_ -split ','; [console]::beep($a[0], $a[1]) }"
goto :EOF

659,300
587,300
523,300
587,300
659,300
659,300
659,600
587,300
587,300
587,600
659,300
784,300
784,600
659,300
587,300
523,300
587,300
659,300
659,300
659,300
659,300
587,300
587,300
659,300
587,600
523,900
( 2 * b ) || ! ( 2 * b )

6

Re: CMD/BAT: звуки (3 разных + бонус: сигнал SOS)

У меня почему-то этот вариант не играет, тишина, но и ошибки никакие не отобразил.