How can i play a sound (CPU Beep or wav, don't matter what) using the Windows cmd?
You can do this natively with PowerShell. PowerShell is included with Windows Vista and later, and can be downloaded from Microsoft for older versions.
PowerShell can be used to load the
System.Media.SoundPlayer .NET class, which can be used to play a wave file.
(New-Object Media.SoundPlayer "C:\WINDOWS\Media\notify.wav").Play();
If you want, you can run this from the normal command line:
powershell -c (New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync();
PlaySync is used in the second example since the standard asynchronous play would be interrupted by the PowerShell process closing when launched like this)
And if you wanted to play only the first, say, 5 seconds of the sound:
powershell -c (New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").Play(); Start-Sleep -s 5; Exit;
A beep can be easily accomplished in the normal command line with
echo ^G (where
^G represents BEL, ASCII character 7, inserted with Ctrl + G), as described in other answers. In the interest of completeness, here's the PowerShell method:
Yes, it's the same as the
echo in PowerShell is an alias (i.e. means the same thing) to
Write-Host, which displays something to the screen (or triggers the Windows notification sound in the case of
An alternative method in PowerShell is to use the escape sequence for BEL, rather than inserting a literal BEL character with Ctrl + G:
` is PowerShell's escape character, which modifies the meaning of the character after it. An escaped
a indicates BEL. The advantage of this approach is it is easier and more visible when typed into a script.
To run this in a batch file (again, Vista or later):
powershell -c echo `a
(While an old thread, people will find it on a search). I see someone has already recommended VLC. I use it to play a sound in Windows without anything visible using parameters: "c:\Program Files (x86)\videolan\vlc\vlc.exe" --qt-start-minimized --play-and-exit "c:\Program Files (x86)\videolan\vlc\Windows Exclamation.wav"
The main addition to the previous comment is --qt-start-minimized The paths and quote characters are just to illustrate a typical use. I've used this unchanged in XP, 7, 10; I expect Vista and 8.x to work too.
If a plain beep is alright, echo the character with the value 7, the so-called bell character. Note, however, that beeps can be turned off.
If you want something else, you'll have to launch an application that does the trick.
You could write a simple console application that took the sound file (or sound id) as an argument and called PlaySound
mplayer for this. A bit an overkill as it can play almost any media file. Recent windows builds can be found at spirton, as of 2013. Example usage:
You should add mplayer.exe to your PATH (see What are PATH and other environment variables, and how can I set or use them? or How can I permanently append an entry into the system's PATH variable, via command line? to do this.)
You can use fmedia to play a sound file from Windows terminal:
This command will start the playback of
file.mp3 in foreground and quit after the file has finished playing.
If you wish to do it in background, add
--background switch to your command:
fmedia file.wav --background
This command will start a new process in background and detach from your console immediately.
fmedia is a portable application (works without installation) and consumes very small amount of system resources. Also, its startup time is instantaneous.
P.S. Use command
fmedia.exe --install to add it to your
%PATH% environment variable, otherwise you need to execute it with full path, e.g.