VBS文件从批处理文件中的其他目录运行时冻结

时间:2017-12-30 19:32:04

标签: windows batch-file cmd vbscript

我有一个编程为运行VBS文件的批处理文件。在VBS文件中,它被编程为隐藏Ping.mp3(下面的代码)。当批处理文件运行时,VBS文件和批处理文件一样冻结,如下面的屏幕截图所示。

Screenshot of the issue

  

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命令,它不是。

任何帮助都将不胜感激。

2 个答案:

答案 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