我有一个编程为运行VBS文件的批处理文件。在VBS文件中,它被编程为隐藏Ping.mp3
(下面的代码)。当批处理文件运行时,VBS文件和批处理文件一样冻结,如下面的屏幕截图所示。
BAT代码:
@echo off
cls
pushd %~dp0
Files\Ping.vbs
pause
popd
VBS代码:
Set Sound = CreateObject("WMPlayer.OCX.7")
Sound.URL = "Ping.mp3"
Sound.Controls.play
do while Sound.currentmedia.duration = 0
wscript.sleep 100
loop
wscript.sleep (int(Sound.currentmedia.duration)+1)*1000
我检查了问题是否是基于网络的,但事实并非如此。 我还检查了问题是否是pushd和popd命令,它不是。
任何帮助都将不胜感激。
答案 0 :(得分:2)
我没有网络资料,但我复制了"冻结"当Ping.mp3在'文件中时使用您的代码。目录,Ping.vbs所在的目录。当mp3与批处理文件位于同一目录时播放。这意味着"当前目录"由vbs看到(仍然)Any
给出的目录。因此,如果你的Ping.mp3在'文件中,我建议将pushd %~dp0
替换为Sound.URL = "Ping.mp3"
。 。目录
答案 1 :(得分:1)
无需使用批处理,您不必cd到该文件夹。 如果您确实使用了批处理,请确保它是启动脚本的cscript.exe而不是wscript.exe。 只需使用URL中的完整路径即可。 如果文件不存在,您将获得"冻结"。
它有助于在控制台中显示一些信息,以便您知道脚本暂停的位置,原始调试..
以下适用于我的系统。
Set Sound = CreateObject("WMPlayer.OCX")
Wscript.echo "Media player loaded"
Sound.settings.volume = 50
Sound.URL = "C:\Users\user\vbscript\mp3\ping.mp3"
Wscript.echo "start playing"
Sound.Controls.play
while Sound.Playstate <> 1
Wscript.echo Sound.currentmedia.duration
Wscript.sleep 100
wend