Batch mehrere sounds nacheinander abspielen?

2 Antworten

mehrere.bat

call ton1.bat
call ton2.bat
call ton3.bat

Evtl. eine pause-Anweisung dazwischen

ton1.bat könnte Dein Batch sein, den Du oben zeigst.

Diese "Sau" habe ich in den letzten Wochen und Monaten wiederholt durchs Dorf getrieben.

https://www.gutefrage.net/tag/batch-trick/1

jetzt geselle ich zum Javascript

@echo off
chcp 65001 >nul & rem Umlaute anzeigen
if "%~1"=="" (
    echo  Ziehe ein oder mehrere Musikdateien auf "%~nx0"
    timeout 5 >nul
    exit /b
)
if exist "%temp%\PlaySound.js" goto :Play
echo player=new ActiveXObject("WMPlayer.OCX.7");for(i=0; i^<WScript.Arguments.length; i++){player.URL=WScript.Arguments(i);player.Controls.play();while(player.currentmedia.duration==0){WScript.sleep(100)};WScript.Echo('Playing: '+player.currentMedia.name+'  '+ player.currentmedia.duration+'  Sekunden');WScript.sleep(player.currentmedia.duration*1000)};>"%temp%\PlaySound.js"
:Play
cscript /nologo "%temp%\PlaySound.js" %*
pause

auch noch eine Powershellvariante

<# : Batch Abschnitt ,Batch sieht in dieser Zeile die Eingabe aus der Datei # an ein SprungLabel, Powershell sieht den begin eines Kommentars. 
@echo off 
chcp 65001 >nul
  rem alles von hier  bis  :run dient der Demo....
if "%~1" neq "" goto :runPS
echo Hilfe: Ziehe  Dateien auf  die die Batch "%~nx0"...
timeout 5 >nul
exit /b


:runPS
color 1f
  rem Diese Zeile  nicht veränden! startet Powershell ohne Rechtevergabe und übergibt Parameter über die Pipe
(for %%I in ("%~f0" %*) do @echo:%%~I)|powershell -noprofile "[Array]$argv = $input|?{$_}; iex (${%~f0} | out-string)"


  rem das folgende  pause hält das Fenster  offen....
pause
exit /b
: Ende Batch  #>
#$ScriptName=$argv[0]
  #alle übergebenen Parameter außer $argv[0] behalten
$argv=$argv|Select -Skip 1


Add-Type -AssemblyName presentationCore;
$mediaPlayer = New-Object system.windows.media.mediaplayer;
  #für  alle übergebenen AudioDateien...
$argv|%{
    $_
    $mediaPlayer.open($_);
    while (-not($Duration) ) {$Duration = $MediaPlayer.NaturalDuration.TimeSpan.TotalMilliseconds; sleep -m 100 }
    $mediaPlayer.Play()
    sleep -m $Duration   #warte spieldauer der Datei millisekunden   
}

Ich habe keine Ahnung wie Deine Batch auch nur einen einzigen Mucks von sich geben konnte? Die Syntax für den Powershell Aufruf haut nicht hin. Zudem kann das Media.SoundPlayer-Object nur Wav abspielen.

Die Eingabe von Soundfiles via set /p ist viel zu Fehleranfällig um igendwie nutzbringend zu sein.

Dies ist der Grund weshalb ich schon seit Langem Batches als DropTarget verwende.

Woher ich das weiß:Eigene Erfahrung – Ich mach das seit 30 Jahren

Was möchtest Du wissen?