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

48336
Thiago Belem

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

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

12 ответов на вопрос

41
Bob

Вы можете сделать это изначально с 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 9 лет назад 0
@ Dodd10x Не легко для глобального аудио, нет. Не могли бы вы предоставить больше контекста? Вы собираетесь убить или сделать паузу? Другой игрок - другой экземпляр этого сценария, или медиаплеер, или браузер, игра и т. Д.? Если это еще один экземпляр того же сценария, то он намного проще (хотя и не совсем тривиален). Bob 9 лет назад 0
Это еще один экземпляр того же сценария. Я думаю, что я мог бы добавить строку, чтобы убить powershell.exe в списке задач в первую очередь Dodd10x 9 лет назад 0
@ Dodd10x Есть два способа, которые я бы предложил. Одним из них является получение идентификатора процесса экземпляра PowerShell и сохранение его в файл, а затем уничтожение этого идентификатора в начале нового экземпляра (и очистка файла). Это безопаснее, чем убивать все процессы PS. Другим способом было бы использовать семафор (флаг / сигнал) в PowerShell - вы бы сигнализировали семафор, использовали `Play ()` (async), ожидали семафор и закрывали. Семафоры - более чистый способ сделать это, но немного более сложный. Я был бы рад углубиться в подробности [в чате] (http://chat.stackexchange.com/rooms/118/root-access). Bob 9 лет назад 0
10
theMike
echo ^G 

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

3
Mark Ribau

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

vlc.exe --play-and-exit audio.wav 
К сожалению, это работает на переднем плане honzajde 7 лет назад 0
Да, это было предназначено для замены метода wmplayer, так как он загружался медленно, и они убрали поддержку аргумента / close. Метод PowerShell, вероятно, является лучшим выбором. Mark Ribau 7 лет назад 0
2
yuliskov

Workaround (some sort of):

1) run audio file

2) wait till track ends (in my case its 5 seconds) and close media player

start wmplayer "C:\Windows\Media\Alarm10.wav" && timeout 5 && taskkill /im wmplayer.exe 
1
Michael Madsen

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

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

1
John Knoeller

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

1
pol098

(Пока старая ветка, люди найдут ее в поиске). Я вижу, кто-то уже рекомендовал 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 тоже будут работать.

1
budrow1138

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

Добро пожаловать в Супер пользователя! Пожалуйста, прочтите [Как я рекомендую программное обеспечение] (https://meta.superuser.com/questions/5329/how-do-i-recommend-software-in-my-answers/5330#5330), чтобы узнать, как Вы должны рекомендовать программное обеспечение. Вы должны предоставить хотя бы ссылку, некоторую дополнительную информацию о самом программном обеспечении и о том, как его можно использовать для решения поставленной задачи. DavidPostill 7 лет назад 0
0
Mr. Shiny and New 安宇

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

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

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

0
n611x007

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

mplayer c:\windows\media\chimes.wav 

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