Воспроизвести звук (может быть WAV?) Из командной строки Windows

26

Как воспроизвести звук (CPU Beep или wav, неважно, что) с помощью Windows cmd?

Тьяго Белем
источник
4
Использование start file.wavэто плохая идея. Может потребоваться секунда, чтобы запустить раздутый медиаплеер, только для одного звукового сигнала. Кроме того, ассоциации файлов могут быть неправильными, проигрыватель мультимедиа может не воспроизводить файл или воспроизводить его снова и снова и т . Д. Способ создания простого звукового сигнала - запись beep ^G. «^ G» - это не акцентирующий символ, за которым следует заглавная буква G, а специальный символ, который вы вставляете нажатием Ctrl + G. На самом деле это символ BEL со значением ASCII 0x07.
Андреас Рейбранд

Ответы:

-2

Не в Windows сейчас, чтобы проверить это возможное решение, но попробуйте: «начать»

Я думаю, что он откроет файл WAV с соответствующей программой, что ваши окна имеют для файлов ". WAV".

И обратите внимание, это дикая догадка - кто-то с окнами может дать вам лучшее решение, если это не поможет

zipizap
источник
1
Ну, это, безусловно, откроет файл в любом приложении, связанном с типом, но это все. Это приложение должно решить, что с ним делать - оно может воспроизвести его, добавить в очередь или что-то еще. Даже если он воспроизводит файл, вполне вероятно, что он не завершится после воспроизведения, а это, вероятно, плохая идея.
Это не самый лучший ответ!
Антонио
@Antonio, это было в 2010 году :)
zipizap
Удивительно, но это помечено как принятый «лучший ответ»! Hen
Хенрик
50

Вы можете сделать это изначально с PowerShell. PowerShell входит в состав Windows Vista и более поздних версий и может быть загружен с веб-сайта Microsoft для более старых версий.


Волновые файлы

PowerShell можно использовать для загрузки System.Media.SoundPlayerкласса .NET, который можно использовать для воспроизведения волнового файла.

(New-Object Media.SoundPlayer "C:\WINDOWS\Media\notify.wav").Play();

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

powershell -c (New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync();

(обратите внимание, что PlaySyncиспользуется во втором примере, поскольку стандартное асинхронное воспроизведение будет прервано закрытием процесса PowerShell при запуске таким образом)

И если вы хотите воспроизвести только первые, скажем, 5 секунд звука:

powershell -c (New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").Play(); Start-Sleep -s 5; Exit;

гудок

Звуковой сигнал может быть легко выполнен в обычной командной строке с помощью echo ^G(где ^Gпредставляет BEL, символ ASCII 7, вставленный с Ctrl+ G), как описано в других ответах. В целях полноты, вот метод PowerShell:

echo ^G

Да, это так же, как cmdтот. echoв PowerShell есть псевдоним (то есть означает то же самое) Write-Host, который отображает что-то на экране (или вызывает звук уведомления Windows в случае BEL).

Альтернативный метод в PowerShell - использовать escape-последовательность для BEL, а не вставлять буквенный символ BEL с Ctrl+ G:

echo `a

`является escape-символом PowerShell, который изменяет значение символа после него. Побег aуказывает на BEL. Преимущество этого подхода в том, что он легче и более заметен при вводе в скрипт.

Чтобы запустить это в командном файле (снова, Vista или позже):

powershell -c echo `a

источник

боб
источник
Можно ли также заставить эту команду уничтожить и в данный момент воспроизводить файлы wav перед выполнением нового файла wav?
Dodd10x
@ Dodd10x Не легко для глобального звука, нет. Не могли бы вы предоставить больше контекста? Вы собираетесь убить или сделать паузу? Другой игрок - другой экземпляр этого сценария, или медиаплеер, или браузер, игра и т. Д.? Если это еще один экземпляр того же сценария, то он намного проще (хотя и не совсем тривиален).
Боб
Это еще один экземпляр того же сценария. Я думаю, что я мог бы добавить строку, чтобы убить powershell.exe в списке задач в первую очередь
Dodd10x
@ Dodd10x Я бы предложил два способа. Одним из них является получение идентификатора процесса экземпляра PowerShell и сохранение его в файл, а затем уничтожение этого идентификатора в начале нового экземпляра (и очистка файла). Это безопаснее, чем убивать все процессы PS. Другим способом было бы использовать семафор (флаг / сигнал) в PowerShell - вы бы сигнализировали семафор, использовали Play()(асинхронный), ожидали семафор и закрывали. Семафоры - более чистый способ сделать это, но немного более сложный. Я был бы рад вдаваться в подробности в чате .
Боб
11
echo ^G

Где ^Gнаходится CTRL + Gили Alt + 7на клавиатуре.

theMike
источник
5

Обходной путь (своего рода):

1) запустить аудио файл

2) дождаться окончания трека (в моем случае это 5 секунд) и закрыть медиаплеер

start wmplayer "C:\Windows\Media\Alarm10.wav" && timeout 5 && taskkill /im wmplayer.exe
yuliskov
источник
4

Установите VLC. Используйте следующую команду. Это начинается очень быстро. Это то, что я использовал в Windows 7 b / c. Wmplayer загружается так долго, и опция / close была удалена из wmplayer.

vlc.exe --play-and-exit audio.wav
Марк Рибау
источник
К сожалению, это работает на переднем плане
honzajde
Да, это было предназначено для замены метода wmplayer, так как он загружался медленно, и они убрали поддержку аргумента / close. Метод PowerShell, вероятно, является лучшим выбором.
Марк
1
Для тех, кто ищет решение безголового VLC, vlc -I dummy --dummy-quiet t.mp3 vlc://quitс forum.videolan.org/viewtopic.php?t=79516#p262603
MLM
2

(Пока старая ветка, люди найдут ее в поиске). Я вижу, кто-то уже рекомендовал VLC. Я использую его для воспроизведения звука в Windows без видимых параметров, используя параметры: "c: \ Program Files (x86) \ videolan \ vlc \ vlc.exe" --qt-start-minimized --play-and-exit "c: \ Program Files (x86) \ videolan \ vlc \ Windows Exclamation.wav "

Основным дополнением к предыдущему комментарию является --qt-start-minimized. Пути и символы кавычек приведены только для иллюстрации типичного использования. Я использовал это без изменений в XP, 7, 10; Я ожидаю, что Vista и 8.x тоже будут работать.

pol098
источник
1

Если обычный звуковой сигнал в порядке, отобразите символ со значением 7, так называемый символ звонка . Обратите внимание, однако, что звуковые сигналы могут быть отключены.

Если вы хотите что-то еще, вам придется запустить приложение, которое делает свое дело.

Майкл Мэдсен
источник
1

Вы можете написать простое консольное приложение, которое принимает звуковой файл (или звуковой идентификатор) в качестве аргумента и называется PlaySound

Джон Ноллер
источник
1

Очень легким решением является cmndPlayWAV.jar, который также работает в Linux и OS / X. Он имеет встроенный звук, если не указан параметр или вы можете указать полный путь к WAV-файлу. Кстати, всегда можно сделать звуковое сообщение .wav для использования с Windows Recorder.

budrow1138
источник
Добро пожаловать в Супер пользователя! Пожалуйста, прочитайте, Как я рекомендую программное обеспечение для некоторых советов относительно того, как Вы должны рекомендовать программное обеспечение. Вы должны предоставить хотя бы ссылку, некоторую дополнительную информацию о самом программном обеспечении и о том, как его можно использовать для решения поставленной задачи.
DavidPostill
0

На XP я делаю это

start /min mplay32 /play /close %WINDIR%\media\tada.wav

Это не идеально, но это действительно легко, и это работает.

Мистер Блестящий и Новый 安 宇
источник
0

Я использую mplayerдля этого. Немного излишним, поскольку он может воспроизводить практически любой медиа-файл. Последние сборки Windows можно найти в spirton , начиная с 2013 года. Пример использования:

mplayer c:\windows\media\chimes.wav

Вы должны добавить mplayer.exe в вашу PATH (см. « Что такое PATH и другие переменные среды и как я могу их установить или использовать?» Или « Как сделать постоянное добавление записи в системную переменную PATH через командную строку?») . )

n611x007
источник
0

Вы можете использовать fmedia для воспроизведения звукового файла из терминала Windows:

fmedia file.mp3

Эта команда начнет воспроизведение file.mp3на переднем плане и выйдет после завершения воспроизведения файла.

Если вы хотите сделать это в фоновом режиме, добавьте --backgroundпереключатель в вашу команду:

fmedia file.wav --background

Эта команда запустит новый процесс в фоновом режиме и немедленно отсоединится от вашей консоли.

fmedia - портативное приложение (работает без установки) и потребляет очень мало системных ресурсов. Кроме того, его время запуска является мгновенным.

PS Используйте команду, fmedia.exe --installчтобы добавить ее в %PATH%переменную среды, в противном случае вам нужно выполнить ее с полным путем, например D:\fmedia\fmedia.exe.

Защита
источник