Tocar um som (talvez WAV?) No comando de linha do Windows

26

Como posso reproduzir um som (bipe da CPU ou wav, não importa o quê) usando o cmd do Windows?

Thiago Belem
fonte
4
Usar start file.wavé uma má ideia. Pode levar um segundo para iniciar um media player inchado, apenas para um único bipe. Além disso, as associações de arquivos podem estar erradas, o media player pode não reproduzir o arquivo ou reproduzi-lo repetidamente, etc. A maneira de criar um "bipe" simples é escrever beep ^G. "^ G" não é o acento circunflexo seguido de uma letra maiúscula G, mas um caractere especial que você insere pressionando Ctrl + G. Na verdade, é o caractere BEL com valor ASCII 0x07.
Andreas Rejbrand

Respostas:

-2

Agora não no Windows, para testar esta possível solução, mas tente: "iniciar"

Eu acho que ele abrirá o arquivo wav com o programa associado que o Windows possui para arquivos ".wav".

E observe que esse é um palpite: alguém com Windows pode oferecer uma solução melhor se isso não funcionar.

zipizap
fonte
1
Bem, certamente abrirá o arquivo em qualquer aplicativo associado ao tipo, mas é isso. Cabe a esse aplicativo decidir o que faz com ele - ele pode ser reproduzido, pode ser adicionado a uma fila ou qualquer outra coisa. Mesmo que ele reproduza o arquivo, é provável que ele não termine após a reprodução, o que significa que provavelmente é uma má idéia.
Esta não é a melhor resposta!
Antonio
@Antonio, isso foi em 2010 :) #
zipizap zipizap
Surpreendentemente, isso é marcado como a "melhor resposta" aceita! Henr
Henrik
50

Você pode fazer isso nativamente com o PowerShell. O PowerShell está incluído no Windows Vista e posterior e pode ser baixado da Microsoft para versões mais antigas.


Arquivos Wave

O PowerShell pode ser usado para carregar a System.Media.SoundPlayerclasse .NET, que pode ser usada para reproduzir um arquivo wave.

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

Se desejar, você pode executar isso na linha de comando normal:

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

(observe que PlaySyncé usado no segundo exemplo, pois a reprodução assíncrona padrão seria interrompida pelo fechamento do processo do PowerShell quando iniciado assim)

E se você quiser tocar apenas o primeiro, digamos, 5 segundos do som:

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

Bip

Um sinal sonoro pode ser facilmente realizado na linha de comando normal com echo ^G(onde ^Grepresenta BEL, caractere ASCII 7, inserido com Ctrl+ G), conforme descrito em outras respostas. No interesse da integridade, aqui está o método PowerShell:

echo ^G

Sim, é o mesmo que cmdesse. echono PowerShell, existe um alias (isto é, significa a mesma coisa) para Write-Host, que exibe algo na tela (ou aciona o som de notificação do Windows no caso de BEL).

Um método alternativo no PowerShell é usar a sequência de escape para BEL, em vez de inserir um caractere literal de BEL com Ctrl+ G:

echo `a

`é o caractere de escape do PowerShell, que modifica o significado do caractere depois dele. Um escape aindica BEL. A vantagem dessa abordagem é que é mais fácil e mais visível quando digitado em um script.

Para executar isso em um arquivo em lotes (novamente, Vista ou posterior):

powershell -c echo `a

fonte

Prumo
fonte
É possível também ter este comando matar e atualmente reproduzir arquivos wav antes de executar o novo arquivo wav?
precisa saber é o seguinte
@ Dodd10x Não é fácil para áudio global, não. Você poderia fornecer mais contexto? Você pretende matar ou fazer uma pausa? O outro jogador é outra instância deste script, ou um media player, ou um navegador, um jogo etc.? Se for outra instância do mesmo script, será muito mais simples (embora ainda não seja totalmente trivial).
21414 Bob
É outra instância do mesmo script. Eu estou pensando que eu poderia adicionar uma linha para matar powershell.exe na lista de tarefas primeira
Dodd10x
@ Dodd10x Há duas maneiras de sugerir. Uma é obter o ID do processo da instância do PowerShell e salvá-lo em um arquivo, depois matar esse ID no início de uma nova instância (e limpar o arquivo). Isso é mais seguro do que matar todos os processos do PS. A outra maneira seria usar um semáforo (sinalizador / sinal) no PowerShell - você sinalizaria o semáforo, usaria Play()(assíncrono), esperaria por um semáforo e fecharia. Os semáforos são uma maneira mais limpa de fazer isso, mas um pouco mais complicado. Ficaria feliz em entrar em mais detalhes no chat .
21414 Bob
11
echo ^G

Onde ^Gestá CTRL + Gou Alt + 7no teclado.

theMike
fonte
5

Solução alternativa (algum tipo de):

1) execute o arquivo de áudio

2) aguarde até que a faixa termine (no meu caso, são 5 segundos) e feche o media player

start wmplayer "C:\Windows\Media\Alarm10.wav" && timeout 5 && taskkill /im wmplayer.exe
yuliskov
fonte
4

Instale o VLC. Use o seguinte comando. Começa MUITO rápido. Isso é o que eu usei no Windows 7 b / c wmplayer leva tanto tempo para carregar, e a opção / close foi removida do wmplayer.

vlc.exe --play-and-exit audio.wav
Mark Ribau
fonte
Infelizmente, isso está sendo executado em primeiro plano
honzajde
Sim, isso pretendia substituir o método wmplayer, pois era lento para carregar e eles removeram o suporte ao argumento / close. O método PowerShell é provavelmente a melhor aposta.
Mark Ribau
1
Para aqueles que procuram uma solução VLC decapitada, vlc -I dummy --dummy-quiet t.mp3 vlc://quitem forum.videolan.org/viewtopic.php?t=79516#p262603
MLM
2

(Enquanto um tópico antigo, as pessoas o encontram em uma pesquisa). Vejo que alguém já recomendou o VLC. Eu o uso para reproduzir um som no Windows sem nada visível usando os parâmetros: "c: \ Arquivos de Programas (x86) \ videolan \ vlc \ vlc.exe" --qt-start-minimized --play-and-exit "c: \ Arquivos de programas (x86) \ videolan \ vlc \ Windows Exclamation.wav "

A principal adição ao comentário anterior é --qt-start-minimized Os caminhos e os caracteres de aspas são apenas para ilustrar um uso típico. Eu usei isso inalterado no XP, 7, 10; Espero que o Vista e o 8.x funcionem também.

pol098
fonte
1

Se um sinal sonoro normal estiver correto, ecoe o caractere com o valor 7, o chamado caractere de campainha . Observe, no entanto, que os bipes podem ser desativados.

Se você quiser algo mais, precisará iniciar um aplicativo que faça o truque.

Michael Madsen
fonte
1

Você pode escrever um aplicativo de console simples que tenha como argumento o arquivo de som (ou o id do som) e chamado PlaySound

John Knoeller
fonte
1

Uma solução muito leve é ​​o cmndPlayWAV.jar, que também funciona no Linux e OS / X. Ele possui um som embutido se nenhum parâmetro for especificado ou você pode fornecer o caminho completo para um arquivo .wav. Aliás, sempre se pode fazer uma mensagem de áudio .wav para usar com o Windows Recorder.

budrow1138
fonte
Bem-vindo ao Super Usuário! Leia Como recomendo o software para obter algumas dicas sobre como você deve recomendar o software. Você deve fornecer pelo menos um link, algumas informações adicionais sobre o software em si e como ele pode ser usado para resolver o problema na pergunta.
DavidPostill
0

No XP eu faço isso

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

Não é o ideal, mas é realmente fácil e funciona.

Sr. Brilhante e Novo 安 宇
fonte
0

Eu uso mplayerpara isso. Um pouco exagerado, pois pode reproduzir quase qualquer arquivo de mídia. As construções recentes do Windows podem ser encontradas na spirton , a partir de 2013. Exemplo de uso:

mplayer c:\windows\media\chimes.wav

Você deve adicionar o mplayer.exe ao seu PATH (consulte O que são PATH e outras variáveis ​​de ambiente e como posso defini-las ou usá-las? Ou Como anexar permanentemente uma entrada na variável PATH do sistema, via linha de comando?) Para fazer isso. )

n611x007
fonte
0

Você pode usar o fmedia para reproduzir um arquivo de som no terminal do Windows:

fmedia file.mp3

Este comando iniciará a reprodução file.mp3em primeiro plano e será encerrado após a reprodução do arquivo.

Se você deseja fazer isso em segundo plano, adicione --backgroundswitch ao seu comando:

fmedia file.wav --background

Este comando iniciará um novo processo em segundo plano e será desconectado do console imediatamente.

O fmedia é um aplicativo portátil (funciona sem instalação) e consome uma quantidade muito pequena de recursos do sistema. Além disso, seu tempo de inicialização é instantâneo.

PS Use o comando fmedia.exe --installpara adicioná-lo à sua %PATH%variável de ambiente; caso contrário, você precisará executá-lo com o caminho completo, por exemplo D:\fmedia\fmedia.exe.

def
fonte