Spielen Sie einen Sound (vielleicht WAV?) Über den Windows-Zeilenbefehl ab

26

Wie kann ich einen Sound (CPU Beep oder WAV, egal was) mit dem Windows-Cmd abspielen?

Thiago Belem
quelle
4
Verwenden start file.wavist eine schlechte Idee. Es kann eine Sekunde dauern, bis ein aufgeblähter Mediaplayer gestartet ist, nur für einen einzelnen Piepton. Außerdem können Dateizuordnungen falsch sein, der Media Player spielt die Datei möglicherweise nicht ab, spielt sie möglicherweise immer wieder ab usw. Die Art und Weise, wie ein einfacher "Piepton" erzeugt wird, ist das Schreiben beep ^G. "^ G" ist nicht der Zirkumflex-Akzent gefolgt von einem Großbuchstaben G, sondern ein Sonderzeichen, das Sie durch Drücken von Strg + G einfügen. Es ist eigentlich das BEL-Zeichen mit dem ASCII-Wert 0x07.
Andreas Rejbrand

Antworten:

-2

Nicht in Windows jetzt, um diese mögliche Lösung zu testen, aber versuchen Sie: "Start"

Ich denke, es wird die WAV-Datei mit dem dazugehörigen Programm öffnen, das Ihr Windows für ".wav" -Dateien hat.

Und beachten Sie, dass dies eine Vermutung ist - jemand mit Windows könnte Ihnen eine bessere Lösung bieten, wenn dies nicht funktioniert

zipizap
quelle
1
Nun, es öffnet die Datei mit Sicherheit in jeder Anwendung, die dem Typ zugeordnet ist, aber das war's. Es liegt an dieser Anwendung, zu entscheiden, was sie damit macht - sie kann es abspielen, einer Warteschlange hinzufügen oder etwas anderes. Selbst wenn die Datei abgespielt wird, wird sie wahrscheinlich nach dem Abspielen nicht beendet, was wahrscheinlich eine schlechte Idee ist.
Dies ist so sehr nicht die beste Antwort!
Antonio
@ Antonio, das war im Jahr 2010 :)
zipizap
Erstaunlicherweise wird dies als die akzeptierte "beste Antwort" markiert! 😁
Henrik
50

Sie können dies nativ mit PowerShell tun. PowerShell ist in Windows Vista und höher enthalten und kann für ältere Versionen von Microsoft heruntergeladen werden.


Wave-Dateien

Mit PowerShell kann die System.Media.SoundPlayer.NET-Klasse geladen werden, mit der eine Wave-Datei abgespielt werden kann.

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

Wenn Sie möchten, können Sie dies über die normale Befehlszeile ausführen:

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

(Beachten Sie, dass dies PlaySyncim zweiten Beispiel verwendet wird, da die asynchrone Standardwiedergabe durch das Schließen des PowerShell-Prozesses unterbrochen wird, wenn dieser wie folgt gestartet wird.)

Und wenn Sie nur das erste abspielen möchten, sagen wir, 5 Sekunden des Tons:

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

Signalton

Ein Piepton kann einfach in der normalen Befehlszeile mit echo ^G(wobei ^GBEL, ASCII-Zeichen 7, eingefügt mit Ctrl+ G) erzeugt werden, wie in anderen Antworten beschrieben. Der Vollständigkeit halber hier die PowerShell-Methode:

echo ^G

Ja, es ist dasselbe wie das cmdeine. echoIn PowerShell gibt es einen Alias ​​(dh dasselbe bedeutet) Write-Host, der etwas auf dem Bildschirm anzeigt (oder bei Windows den Benachrichtigungston auslöst BEL).

Eine alternative Methode in PowerShell besteht darin, die Escape-Sequenz für BEL zu verwenden, anstatt ein literales BEL-Zeichen mit Ctrl+ einzufügen G:

echo `a

`ist das Escape-Zeichen von PowerShell, mit dem die Bedeutung des nachfolgenden Zeichens geändert wird. Ein Escapezeichen azeigt BEL an. Der Vorteil dieses Ansatzes ist, dass er einfacher und sichtbarer ist, wenn er in ein Skript eingegeben wird.

So führen Sie dies in einer Batchdatei aus (erneut Vista oder höher):

powershell -c echo `a

Quelle

Bob
quelle
Ist es möglich, dass dieser Befehl auch WAV-Dateien beendet und aktuell wiedergibt, bevor die neue WAV-Datei ausgeführt wird?
Dodd10x
@ Dodd10x Nicht einfach für globales Audio, nein. Könnten Sie mehr Kontext bereitstellen? Hast du vor zu töten oder zu pausieren? Ist der andere Player eine andere Instanz dieses Skripts oder ein Media Player oder ein Browser, ein Spiel usw.? Wenn es sich um eine andere Instanz desselben Skripts handelt, ist es viel einfacher (wenn auch noch nicht ganz trivial).
Bob
Es ist eine weitere Instanz desselben Skripts. Ich denke, ich könnte zuerst eine Zeile hinzufügen, um powershell.exe in der Aufgabenliste zu töten
Dodd10x
@ Dodd10x Es gibt zwei Möglichkeiten, die ich vorschlagen würde. Eine besteht darin, die Prozess-ID der PowerShell-Instanz abzurufen und in einer Datei zu speichern. Anschließend müssen Sie diese ID am Anfang einer neuen Instanz löschen (und die Datei löschen). Dies ist sicherer als das Beenden aller PS-Prozesse. Die andere Möglichkeit wäre, ein Semaphor (Flag / Signal) in PowerShell zu verwenden - Sie würden das Semaphor signalisieren, Play()(asynchron) verwenden, auf ein Semaphor warten und schließen. Semaphoren sind eine sauberere Methode, aber etwas komplizierter. Gerne gehe ich im Chat näher darauf ein .
Bob
11
echo ^G

Wo ^Gist CTRL + Goder Alt + 7auf der Tastatur.

theMike
quelle
5

Problemumgehung (eine Art):

1) Führen Sie eine Audiodatei aus

2) Warten Sie, bis der Track endet (in meinem Fall sind es 5 Sekunden) und schließen Sie den Media Player

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

Installieren Sie VLC. Verwenden Sie den folgenden Befehl. Es startet sehr schnell. Dies ist, was ich auf Windows 7 B / C WM-Player verwendet habe, dauert so lange zu laden, und die / close-Option wurde aus WM-Player entfernt.

vlc.exe --play-and-exit audio.wav
Mark Ribau
quelle
Leider läuft dies im Vordergrund
honzajde
Ja, dies sollte die wmplayer-Methode ersetzen, da sie nur langsam geladen werden konnte und die Unterstützung für das Argument / close entfernt wurde. Die PowerShell-Methode ist wahrscheinlich die beste Wahl.
Mark Ribau
1
Für die Suche nach einer Maden VLC - Lösung vlc -I dummy --dummy-quiet t.mp3 vlc://quitvon forum.videolan.org/viewtopic.php?t=79516#p262603
MLM
2

(Während ein alter Thread, werden die Leute es auf einer Suche finden). Ich sehe, jemand hat bereits VLC empfohlen. Ich verwende es, um in Windows einen Sound abzuspielen, ohne dass etwas mit Hilfe von Parametern zu sehen ist: "c: \ Programme (x86) \ videolan \ vlc \ vlc.exe" --qt-start-minimized --play-and-exit "c: \ Programme (x86) \ videolan \ vlc \ Windows Exclamation.wav "

Der Hauptzusatz zum vorherigen Kommentar lautet --qt-start-minimized. Die Pfade und Anführungszeichen dienen nur zur Veranschaulichung einer typischen Verwendung. Ich habe dies unverändert in XP, 7, 10 verwendet; Ich erwarte, dass Vista und 8.x auch funktionieren.

pol098
quelle
1

Wenn ein normaler Piepton in Ordnung ist, wiederholen Sie das Zeichen mit dem Wert 7, das sogenannte Klingelzeichen . Beachten Sie jedoch, dass die Signaltöne ausgeschaltet werden können.

Wenn Sie etwas anderes wollen, müssen Sie eine Anwendung starten, die den Trick macht.

Michael Madsen
quelle
1

Sie könnten eine einfache Konsolenanwendung schreiben, die die Sounddatei (oder Sound-ID) als Argument verwendet und PlaySound heißt

John Knoeller
quelle
1

Eine sehr leichte Lösung ist cmndPlayWAV.jar, die auch unter Linux und OS / X funktioniert. Es hat einen eingebauten Sound, wenn kein Parameter angegeben ist oder Sie den vollständigen Pfad zu einer .wav-Datei angeben können. Im Übrigen konnte man immer eine Audio-Nachricht .wav zur Verwendung mit Windows Recorder erstellen.

budrow1138
quelle
Willkommen bei Super User! Bitte lesen Sie Wie empfehle ich Software für einige Tipps, wie Sie Software empfehlen sollten. Sie sollten mindestens einen Link, einige zusätzliche Informationen zur Software selbst und Informationen zur Behebung des Problems in der Frage bereitstellen.
DavidPostill
0

Auf XP mache ich das

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

Es ist nicht ideal, aber es ist wirklich einfach und es funktioniert.

Mr. Shiny und New 安 安
quelle
0

Sie können fmedia verwenden , um eine Audiodatei vom Windows-Terminal aus abzuspielen :

fmedia file.mp3

Mit diesem Befehl wird die Wiedergabe file.mp3im Vordergrund gestartet und nach Beendigung der Wiedergabe der Datei beendet.

Wenn Sie dies im Hintergrund tun möchten, fügen Sie --backgroundIhrem Befehl den Befehl switch hinzu:

fmedia file.wav --background

Dieser Befehl startet einen neuen Prozess im Hintergrund und trennt sich sofort von Ihrer Konsole.

fmedia ist eine portable Anwendung (funktioniert ohne Installation) und verbraucht sehr wenig Systemressourcen. Außerdem ist die Startzeit sofort.

PS Verwenden Sie den Befehl fmedia.exe --install, um es zu Ihrer %PATH%Umgebungsvariablen hinzuzufügen , andernfalls müssen Sie es mit vollem Pfad ausführen, z D:\fmedia\fmedia.exe.

def
quelle