如何批量播放音乐?

时间:2016-04-09 23:32:11

标签: batch-file vbscript

我已经获得了一些使wmplayer在后​​台播放的代码,但是在完成后我无法循环播放。关于如何做到这一点的任何想法?

@echo off
set "file=GameMusic.mp3"
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
  echo Sound.URL = "%file%"
  echo Sound.Controls.play
  echo do while Sound.currentmedia.duration = 0
  echo wscript.sleep 100
  echo loop
  echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs
start /min sound.vbs
exit /b

5 个答案:

答案 0 :(得分:2)

在vbscript中,您可以使用固定的循环编号执行类似的操作。

测试后你可以摆脱make

node-gyp rebuild

或者当我们添加这一行时使用infnite循环:

  

oPlayer.settings.setMode" loop",True

make

因此,您可以生成一个vbscript文件,并从批处理文件中调用它:

node-gyp rebuild

对于更多 fun ,我在这里添加了一个带语音和ShowBalloonTip功能的打字机:

wscript.echo

答案 1 :(得分:2)

尝试修改此代码并向我提供反馈:

@echo off
set "file=GameMusic.mp3"
( 
  echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
  echo Sound.URL = "%file%"
  echo Sound.settings.volume = 100
  echo Sound.settings.setMode "loop", True
  echo Sound.Controls.play
  echo do while Sound.currentmedia.duration = 0
  echo wscript.sleep 100
  echo loop
  echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000
)>sound.vbs
start /min sound.vbs
exit /b 

编辑: 第二个脚本应该可以尝试一下;)

@echo off
set "file=GameMusic.mp3"
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
  echo Sound.URL = "%file%"
  echo Sound.settings.volume = 100
  echo Sound.settings.setMode "loop", True
  echo Sound.Controls.play
  echo While Sound.playState ^<^> 1
  echo      WScript.Sleep 100
  echo Wend
)>sound.vbs
start /min sound.vbs
exit /b

答案 2 :(得分:1)

从Office中使用对象浏览器(Alt + F11,F2,Alt + T,R,添加Windows Media Player(使用wmp.dll)。

Sub setMode(bstrMode As String, varfMode As Boolean)
    Member of WMPLib.IWMPSettings
    Sets the mode of the playlist

来自帮助https://msdn.microsoft.com/en-us/library/windows/desktop/dd564867(v=vs.85).aspx

autoRewind曲目在播放结束后从头开始重启。

loop曲目序列重复。

showFrame不播放时显示最近的关键帧。此模式与音轨无关。

shuffle曲目以随机顺序播放。

varfMode [in] 一个System.Boolean值,指定新指定的模式是否处于活动状态。

所以Sound.SetMode "Loop", True

Set oPlayer = CreateObject("WMPlayer.OCX")
oPlayer.URL = "C:\Windows\Media\chimes.wav"
oPlayer.settings.volume = 100
oPlayer.settings.setMode "loop", True       
oPlayer.controls.play 
wscript.sleep 10000

答案 3 :(得分:0)

您可以通过将我发布给您的代码写入功能来优化您的代码,并将其称为您想要的! 这是一个例子:

@echo off
echo We play "Intro_DJ.mp3" with a volume of 20
Call:PlayMusic http://hackoo.alwaysdata.net/Intro_DJ.mp3 20
echo(
echo Hit any key to stop the music and play another file
pause>nul
Call:StopMusic
Call:PlayMusic http://hackoo.alwaysdata.net/Matrix.mp3 100
echo(
echo We play "Matrix.mp3" with a volume of 100
echo(
echo Hit any key to stop the music in loop
pause>nul
Call:StopMusic
Exit /b
::************************************************************
:PlayMusic <Media_URL> <Volume>
( 
    echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
    echo Sound.URL = "%1"
    echo Sound.settings.volume = %2
    echo Sound.settings.setMode "loop", True
    echo Sound.Controls.play
    echo While Sound.playState ^<^> 1
    echo      WScript.Sleep 100
    echo Wend
)>%~n0.vbs
start "" "%~n0.vbs" %1 %2
Exit /b
::************************************************************
:StopMusic
Taskkill /IM "wscript.exe" /F>nul 2>&1
Exit /b
::************************************************************

答案 4 :(得分:0)

这是我的控制台播放器集合,仅依赖于windows内置对象。

1)MediaRunner.bat - 它使用Windows媒体播放器对象。要完成它检查其状态 - 当播放器状态为1播放完成时。用法:

 MediaRunner.bat someSound.wav

2)SpPlayer.bat它使用sp.voice对象。尽管它非常轻量级,但它只能播放.wav个文件。用法是相同的。

3)SoundPlayer.bat - 它使用internetexplorer.application对象及其bgsound标签(并且不需要安装媒体播放器)。它预先计算文件的长度以决定何时退出。也接受音乐音量作为可选参数:

 SoundPlayer.bat someFile.mp3 500