ЗВУК В BAT ФАЙЛАХ
В консольных командах Windows отсутствует команда, заставляющая системный динамик издавать звук.Есть несколько путей путей, позволяющих издавать звук в bat (cmd) файлах.
При выводе на экран символа с кодом 7, системный динамик издает короткий гудок.
Поскольку ввод такого символа в разных редакторах выполняется по-разному да и не всегда возможен, то попробуйте просто скопировать следующую строку:
Если вашему редактору такая строка пришлась не по душе, то можно получить ее следующим образом:
Запустить cmd.exe
В командной строке наберите еcho echo
затем пробел и комбинацию Ctrl+G (или "Alt+7").
Эта комбинация отобразится на экране как ^G.
Далее вводим перенаправление в файл >beep.bat.
Все вместе будет выглядеть так:
echo echo ^G >beep.bat
Нажимаем Enter и радуемся появлению файла beep.bat. Он содержит приведенную выше строку и может использоваться для издания простого звука.
Если в приведенном выше примере комбинацию Ctrl+G нажать несколько раз подряд, то и звук будет издан столько же раз подряд.
Еще одна возможность создания такого же файла beep.bat состоит в использовании команды debug прямо из bat файла:
(
echo E100 65 63 68 6F 20 07
echo RCX
echo 6
echo NBEEP.bat
echo W
echo Q
) | debug > NUL
Тем, кто использует текстовый редактор Notepad++ можно поступить следующим образом:
Устанавливаете курсор в операторе echo, например в конце строки
echo file not found
В меню выбираем Правка - Панель символов.
В появившемся окне выбираем строку со значением Value 7 и жмем ENTER. В строке echo появиться знак - на черном фоне белыми буквами будет написано BEL. Это и есть требуемый символ.
Теперь Панель символов можно закрыть. При необходимости вы можете скопировать этот символ в требуемые места программы стандартным образом.
Больше для полноты обзора, чем для практических целей можно использовать то же прием - вывод символа с кодом 07 для издания звука (гудка) из WSH.
Создаем файл с расширением js, например, beep.js со следующим содержимым:
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run("%comspec% /c echo "+String.fromCharCode(7),0,true);
Из bat / cmd файла он запускается следующей командой:
cscript //nologo beep.js
Файл beep.js можно создать прямо из bat / cmd файла оператором echo с перенаправлением вывода в файл.
Следует отметить, что использование JS файлов для решения данной задачи требует больше времени и ресурсов по сравнению с подходом, описанным в начале статьи. Единственное относительное преимущество - нет танцев с бубном для создания символа с кодом 07.
Если вас не пугает шестнадцатеричный редактор, создайте файл из 5 байт, занесите в него следующие данные:
B0 07 CD 29 C3
сохраните файл с именем beep.com и пикайте им в нужном месте.
При отсутствии шестнадцатеричного редактора вы можете выполнить это и с помощью текстового редактора Notepad++.
Создайте новый файл, в меню выберите Правка - Панель символов. Далее последовательно выберите символы с кодами 176, 7, 205, 41, 195 (это десятичное представление приведенных выше шестнадцатеричных чисел). Полученный файл сохраняем с расширением com, например beep.com.
В других текстовых редакторах как правило присутствует аналогичная возможность.
Для любителей экзотики привожу пример создания и использование beep.com с помощью команды debug прямо из bat файла:
if not exist BEEP.COM call :MakeBeep.com
BEEP.COM
...
:MakeBeep.com
(
echo E100 B0 07 CD 29 C3
echo RCX
echo 5
echo NBEEP.COM
echo W
echo Q
) | debug > NUL
exit /B
Есть и более "длинный" вариант этого файла, из 8 байт:
B4 02 B2 07-CD 21 CD 20
Ну а если это делать лень, можете просто скачать этот файл.
(Выложил заархивированным, так как не все качалки любят загружать исполняемые модули. После архивации эти 5 байт превратились в 129. Архиваторы должны же где-то отыгрываться.)
Используя тот же прием - создание com файла при помощи команды debug можно получить sound.com файл. Он позволяет издавать звуки определенной частоты с определенной длительностью.
if not exist Sound.com call :MakeSound.com
rem set mm=395/3 372/6 352/6 332/6 313/6 296/6 279/6
rem 263/6 248/6 234/6 221/6 209/6
set mm=209/6 332/6 332/6 296/6 332/6 279/6 209/6 209/6
sound %mm%
....
goto :EOF
:MakeSound.com
(
echo E100 EB 33 53 79 6E 74 61 78 3A 20 53 4F 55 4E 44 20
echo E110 66 72 65 63 75 65 6E 63 79 2F 74 69 63 6B 73 20
echo E120 2E 2E 2E 0D 0A 24 00 00 00 00 00 2E FE 0E 2A 01
echo E130 2E FF 2E 26 01 B0 1C B4 35 CD 21 89 1E 26 01 8C
echo E140 06 28 01 8D 16 2B 01 B0 1C B4 25 CD 21 8C D8 8E
echo E150 C0 50 B0 B6 E6 43 58 8A 0E 80 00 32 ED E3 0B 8D
echo E160 3E 81 00 B0 20 FC F3 AE 75 0D 52 8D 16 02 01 B4
echo E170 09 CD 21 5A E9 98 00 8D 75 FF AC 3C 20 74 FB 3C
echo E180 30 72 F1 3C 39 77 ED 2C 30 8A D8 32 FF B9 0A 00
echo E190 AC 3C 30 72 0E 3C 39 77 0A 25 0F 00 93 F7 E1 03
echo E1A0 D8 EB ED 3C 2F 75 68 81 FB 0F 27 77 1C 83 FB 14
echo E1B0 7C 17 BA 12 00 33 C0 F7 F3 50 E6 42 8A C4 E6 42
echo E1C0 58 50 E4 61 0C 03 E6 61 58 AC 3C 30 72 41 3C 39
echo E1D0 77 3D 2C 30 8A E0 AC 3C 30 72 0C 3C 39 77 08 2C
echo E1E0 30 D5 0A 8A E0 EB EF 3C 0D 74 04 3C 20 75 20 0A
echo E1F0 E4 74 0B 88 26 2A 01 80 3E 2A 01 00 75 F9 50 E4
echo E200 61 24 FC E6 61 58 80 7C FF 0D 74 03 E9 6B FF 50
echo E210 E4 61 24 FC E6 61 58 C5 16 26 01 B0 1C B4 25 CD
echo E220 21 32 C0 B4 4C CD 21
echo RCX
echo 127
echo NSOUND.COM
echo W
echo Q
) | debug > NUL
exit /B
Параметры утилиты представляют собой пару чисел, отражающих частоту/длительность. Использование частот, приведенных в комментарии позволит вам закодировать другую мелодию.
Как всегда, на высоте nircmd. Там достаточно много возможностей, от простого гудка до проговаривания фразы, записанной в текстовом виде (последнее - не для слабонервных).
nircmd beep [Частота] [длительность в миллисекундах]
например, nircmd beep 500 2000
nircmd mediaplay [время звучания в миллисекундах] [аудио файл]
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь