我在记事本中进行批量游戏,我想知道如何在后台播放文件音乐。
我有这个:
@echo off
start Music.mp3
Pause
它的作用是启动我的名为Music.mp3的音乐,但它会在弹出的单独窗口中启动。我想要的是它开始播放,但不会弹出窗口。我也希望它在我玩游戏时在后台开始播放。
我能以任何方式做到这一点吗?
答案 0 :(得分:1)
使用命令处理器的内部命令最接近的只能最小化窗口。如果你真的想要“背景”它,脚本将会很长并且令人困惑。
@echo off
set "file=track12.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
cscript.exe //nologo sound.vbs
或者这个:
vbs
这会创建一个@echo off
rem ----START OF BATCH CODE---
rem You can paste your entire batch code down here, and use
rem the cscript command whenever you want to play the sound.
cscript //nologo "%~f0?.wsf" //job:VBS
rem ----END OF BATCH CODE---
<package>
<job id="JS">
<script language="VBScript">
Set Sound = CreateObject("WMPlayer.OCX.7")
Sound.URL = "%file%"
Sound.Controls.play
do while Sound.currentmedia.duration = 0
wscript.sleep 100
loop
wscript.sleep (int(Sound.currentmedia.duration)+1)*1000)
</script>
</job>
,无需新窗口即可启动音乐。
用户LưuVĩnhPhúc建议,使用混合脚本可以防止清理问题。
status.emit('newCompletion')
答案 1 :(得分:1)
WMPlayer.OCX
的Here's another脚本。您可以像以下一样使用它:
mediarunner.bat Music.mp3
Here's one基于Internet Explorer中的bgsound
标记。它还允许您将声音音量设置为参数。与WMPlayer.OCX方法不同,不需要安装媒体播放器:
soundPlayer.bat Music.mp3 -50
One based on SP objects但不幸的是它只能播放wav文件:
spplayer.bat file.wav
没有脚本创建临时文件。
答案 2 :(得分:0)
你也可以像这个剧本一样播放在线音乐:
@echo off
Title Listen to the music with batch and vbscript
mode con cols=60 lines=3 & color 9E
echo.
Echo To stop the music just close this window
set "file=http://www.chocradios.ch/djbuzzradio_windows.mp3.asx"
set "vbsfile=%tmp%\%~n0.vbs"
(
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
)>%vbsfile%
cscript /nologo %vbsfile%
答案 3 :(得分:0)
我现在正在自己开发一个批处理游戏,并且已经制定出了自己的类似解决方案,该解决方案在音乐流,声音效果,音量等方面具有很大的灵活性,而玩家却从未见过
最让我沮丧的一件事是设计了一种系统,如果用户退出游戏而没有使用退出选项来调用用于终止vbs脚本的taskill及其子进程,则该系统可以停止音乐播放器。
我最终设计了一个vbs脚本,用于监视cmd.exe,并在没有cmd.exe进程处于活动状态时调用cleanup / Taskkill程序。
所有音乐控制都是作为后台进程进行的,因此游戏操作只有一个cmd.exe实例正在运行。
创建vbs脚本以控制批次中的设置是有优势的,因为您可以使用参数传递有关哪个音轨,什么音量以及是否循环播放声音/音乐的信息。由于音量是在播放音乐或声音时作为参数发送的,因此这会为播放器打开“音量”和“声音”选项,例如有效地使声音效果静音并将音乐的音量设置为具有品味-或禁用其中之一或同时禁用两者。
我的解决方案的代码已在此处记录和描述: https://pastebin.com/nm01MzhM
音乐播放器脚本的摘录:
(
echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
echo Sound.URL = "%~1"
echo Sound.settings.volume = %~2
echo Sound.settings.setMode "loop", %~3
echo Sound.Controls.play
echo While Sound.playState ^<^> 1
echo WScript.Sleep 100
echo Wend
)>PlayMusic.vbs
start /min PlayMusic.vbs
实际上可以在这里听到(看到): https://www.youtube.com/watch?v=qK5IG3oX5mI
答案 4 :(得分:0)
我正在开发自己的游戏,它使用了一系列不同的音频类型,包括语音、音乐和音效。
<!-- : Begin batch script
@echo off
mode con COLS=55 LINES=40
SETLOCAL ENABLEDELAYEDEXPANSION
color f0
title Flame Eternal
set drive=%~dp0%
CALL :MACROS
%music:t s=Music (entersongname here, no extension)%
pause
call :TIP
::^^call :tip kills the process playing music, but not the batch script
:: When you close down the batch game, the music stops
::Here is how the Talking happens:
SET voice=START /B CSCRIPT //NOLOGO "%~f0?.wsf" //JOB:Voice "%talk%" Û
%voice:Û=0%
::^^^^^^^^YOu need the %voice:Û=0%underneath the command. Where it says %talk%, just put the sentence you want read.
::for sfx, use
%music:t s=sound (entersongname here, no extension)%
::Do not put .mp3 at the end :-)
:TIP
TASKKILL /F /IM CSCRIPT.exe >NUL
GOTO :EOF
:MACROS
SET music=START /B CSCRIPT //NOLOGO "%~f0?.wsf" //JOB:t s.mp3
SET ^"LF=^
^" Above empty line is required - do not remove
GOTO :EOF
----- Begin wsf script --->
<package>
<job id="Sound">
<script language="VBScript">
Set args = WScript.Arguments
Set Sound = CreateObject("WMPlayer.OCX.7")
Sound.URL = args.Item(0)
Sound.Controls.play
do while Sound.currentmedia.duration = 0
Wscript.sleep 100
loop
Wscript.sleep (int(Sound.currentmedia.duration)+1)*1000
</script>
</job>
<job id="Music">
<script language="VBScript">
Set args = WScript.Arguments
Set Sound = CreateObject("WMPlayer.OCX.7")
Sound.URL = args.Item(0)
Sound.settings.volume = 100
Sound.settings.setMode "loop", True
Sound.Controls.play
While Sound.playState <> 1
WScript.Sleep 100
Wend
</script>
</job>
<job id="Voice">
<script language="VBScript">
Option Explicit
Dim SpeakV, args
Set args = WScript.Arguments
Set SpeakV = CreateObject("SAPI.spVoice")
Set SpeakV.Voice = SpeakV.GetVoices.Item (args.Item(1))
SpeakV.Speak args.Item(0)
</script>
</job>
</package>
如果音乐文件在任何驱动器中,C:、D:\ 等,请执行以下操作:
set drive=%cd:~0,2%
cd %drive%\Dude\Desktop
::or if the file is in a subdirectory, like a music folder on your desktop:
cd "%~dp0%\Music"