Reproduce un sonido (¿quizás WAV?) Desde el comando de línea de Windows

26

¿Cómo puedo reproducir un sonido (CPU Beep o wav, no importa qué) usando el cmd de Windows?

Thiago Belem
fuente
44
Usar start file.waves una mala idea. Puede tomar un segundo iniciar un reproductor multimedia hinchado, solo por un solo pitido. Además, las asociaciones de archivos pueden estar mal, el reproductor multimedia puede no reproducir el archivo, o puede reproducirlo una y otra vez, etc. La forma de crear un simple "pitido" es escribir beep ^G. "^ G" no es el acento circunflejo seguido de una letra mayúscula G, sino un carácter especial que inserta presionando Ctrl + G. En realidad es el carácter BEL con valor ASCII 0x07.
Andreas Rejbrand el

Respuestas:

-2

No en Windows ahora, para probar esta posible solución, pero intente: "iniciar"

Creo que abrirá el archivo wav con el programa asociado que su Windows tiene para los archivos ".wav".

Y tenga en cuenta que esto es una conjetura: alguien con Windows puede darle una mejor solución si esto no funciona

zipizap
fuente
1
Bueno, ciertamente abrirá el archivo en cualquier aplicación asociada con el tipo, pero eso es todo. Depende de esa aplicación decidir qué hace con ella: puede reproducirla, agregarla a una cola u otra cosa. Incluso si reproduce el archivo, es muy probable que no termine después de reproducirlo, lo que significa que probablemente sea una mala idea.
¡Esta no es la mejor respuesta!
Antonio
@ Antonio, eso fue en 2010 :)
zipizap
¡Sorprendentemente, esto está marcado como la "mejor respuesta" aceptada! 😁
Henrik
50

Puede hacer esto de forma nativa con PowerShell. PowerShell se incluye con Windows Vista y versiones posteriores, y se puede descargar de Microsoft para versiones anteriores.


Archivos Wave

PowerShell se puede usar para cargar la System.Media.SoundPlayerclase .NET, que se puede usar para reproducir un archivo wave.

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

Si lo desea, puede ejecutar esto desde la línea de comando normal:

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

(tenga en cuenta que PlaySyncse usa en el segundo ejemplo, ya que la reproducción asincrónica estándar se vería interrumpida por el cierre del proceso de PowerShell cuando se inicia así)

Y si quisieras tocar solo el primero, digamos, 5 segundos del sonido:

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

Bip

Un pitido se puede lograr fácilmente en la línea de comando normal con echo ^G(donde ^Grepresenta BEL, carácter 7 ASCII, insertado con Ctrl+ G), como se describe en otras respuestas. En aras de la integridad, aquí está el método de PowerShell:

echo ^G

Sí, es lo mismo que el cmduno. echoen PowerShell es un alias (es decir, significa lo mismo) para Write-Host, que muestra algo en la pantalla (o activa el sonido de notificación de Windows en el caso de BEL).

Un método alternativo en PowerShell es usar la secuencia de escape para BEL, en lugar de insertar un carácter BEL literal con Ctrl+ G:

echo `a

`es el carácter de escape de PowerShell, que modifica el significado del carácter después de él. Un escape aindica BEL. La ventaja de este enfoque es que es más fácil y más visible cuando se escribe en un script.

Para ejecutar esto en un archivo por lotes (de nuevo, Vista o posterior):

powershell -c echo `a

fuente

Mover
fuente
¿Es posible que este comando también mate y actualmente reproduzca archivos wav antes de ejecutar el nuevo archivo wav?
Dodd10x
@ Dodd10x No es fácil para audio global, no. ¿Podrías proporcionar más contexto? ¿Pretendes matar o pausar? ¿Es el otro jugador otra instancia de este script, o un reproductor multimedia, o un navegador, un juego, etc.? Si se trata de otra instancia del mismo script, entonces es mucho más simple (aunque todavía no del todo trivial).
Bob
Es otra instancia del mismo guión. Estoy pensando que podría agregar una línea para matar powershell.exe en la lista de tareas primero
Dodd10x
@ Dodd10x Hay dos formas que sugeriría. Una es obtener la ID del proceso de la instancia de PowerShell y guardarla en un archivo, luego eliminar esa ID al comienzo de una nueva instancia (y borrar el archivo). Esto es más seguro que matar todos los procesos de PS. La otra forma sería usar un semáforo (indicador / señal) en PowerShell: indicaría el semáforo, usaría Play()(asíncrono), esperaría un semáforo y cerraría. Los semáforos son una forma más limpia de hacerlo, pero un poco más complicada. Me encantaría entrar en más detalles en el chat .
Bob
11
echo ^G

Dónde ^Gestá CTRL + Go Alt + 7en el teclado.

theMike
fuente
5

Solución (algún tipo de):

1) ejecutar archivo de audio

2) espera hasta que la pista termine (en mi caso son 5 segundos) y cierra el reproductor multimedia

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

Instalar VLC. Usa el siguiente comando. Se inicia REALMENTE rápido. Esto es lo que utilicé en Windows 7 b / c wmplayer tarda mucho en cargar, y la opción / close se eliminó de wmplayer.

vlc.exe --play-and-exit audio.wav
Mark Ribau
fuente
Desafortunadamente, esto se está ejecutando en primer plano
honzajde
Sí, esto tenía la intención de reemplazar el método wmplayer ya que era lento de cargar y eliminaron el soporte para el argumento / close. El método PowerShell es probablemente la mejor apuesta.
Mark Ribau
1
Para aquellos que buscan una solución VLC sin cabeza, vlc -I dummy --dummy-quiet t.mp3 vlc://quitde forum.videolan.org/viewtopic.php?t=79516#p262603
MLM
2

(Si bien es un hilo viejo, la gente lo encontrará en una búsqueda). Veo que alguien ya ha recomendado VLC. Lo uso para reproducir un sonido en Windows sin nada visible usando parámetros: "c: \ Archivos de programa (x86) \ videolan \ vlc \ vlc.exe" --qt-start-minimized --play-and-exit "c: \ Archivos de programa (x86) \ videolan \ vlc \ Windows Exclamation.wav "

La adición principal al comentario anterior es --qt-start-minimized. Las rutas y los caracteres de comillas son solo para ilustrar un uso típico. He usado esto sin cambios en XP, 7, 10; Espero que Vista y 8.x también funcionen.

pol098
fuente
1

Si un pitido simple está bien, repita el carácter con el valor 7, el llamado carácter de campana . Tenga en cuenta, sin embargo, que los pitidos se pueden desactivar.

Si quieres algo más, tendrás que iniciar una aplicación que haga el truco.

Michael Madsen
fuente
1

Podría escribir una aplicación de consola simple que tomara el archivo de sonido (o id de sonido) como argumento y se llamara PlaySound

John Knoeller
fuente
1

Una solución muy ligera es cmndPlayWAV.jar, que también funciona en Linux y OS / X. Tiene un sonido incorporado si no se especifica ningún parámetro o puede dar la ruta completa a un archivo .wav. Por cierto, siempre se puede hacer un mensaje de audio .wav para usar con Windows Recorder.

budrow1138
fuente
¡Bienvenido a Super User! Lea Cómo recomiendo el software para obtener algunos consejos sobre cómo debe recomendar el software. Debe proporcionar al menos un enlace, información adicional sobre el software en sí y cómo se puede utilizar para resolver el problema en la pregunta.
DavidPostill
0

En XP hago esto

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

No es ideal, pero es realmente fácil y funciona.

Sr. Brillante y Nuevo 安 宇
fuente
0

Yo uso mplayerpara esto. Un poco exagerado ya que puede reproducir casi cualquier archivo multimedia. Las compilaciones recientes de Windows se pueden encontrar en spirton , a partir de 2013. Ejemplo de uso:

mplayer c:\windows\media\chimes.wav

Debe agregar mplayer.exe a su PATH (consulte ¿Qué son PATH y otras variables de entorno y cómo puedo configurarlas o usarlas? ¿ O cómo puedo agregar permanentemente una entrada a la variable PATH del sistema, a través de la línea de comandos? Para hacer esto. )

n611x007
fuente
0

Puede usar fmedia para reproducir un archivo de sonido desde el terminal de Windows:

fmedia file.mp3

Este comando iniciará la reproducción de file.mp3 en primer plano y se cerrará una vez que el archivo haya terminado de reproducirse.

Si desea hacerlo en segundo plano, agregue el --backgroundinterruptor a su comando:

fmedia file.wav --background

Este comando iniciará un nuevo proceso en segundo plano y se desconectará de su consola de inmediato.

fmedia es una aplicación portátil (funciona sin instalación) y consume una cantidad muy pequeña de recursos del sistema. Además, su tiempo de inicio es instantáneo.

PS Use el comando fmedia.exe --installpara agregarlo a su %PATH%variable de entorno, de lo contrario, debe ejecutarlo con la ruta completa, por ejemplo D:\fmedia\fmedia.exe.

def
fuente