VBS文件从批处理文件中的其他目录运行时冻结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBS文件从批处理文件中的其他目录运行时冻结相关的知识,希望对你有一定的参考价值。
我有一个编程为运行VBS文件的批处理文件。在VBS文件中,它被编程为隐藏Ping.mp3
(下面的代码)。当批处理文件运行时,VBS文件和批处理文件一样冻结,如下面的屏幕截图所示。
BAT代码:
@echo off
cls
pushd %~dp0
FilesPing.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命令,但事实并非如此。
任何帮助,将不胜感激。
答案
我没有网络资料,但是当Ping.mp3位于“文件”目录(Ping.vbs所在的目录)时,我使用您的代码复制了“冻结”。当mp3与批处理文件位于同一目录时播放。这意味着vbs看到的“当前目录”(仍然)是pushd %~dp0
给出的目录。所以,如果你的Ping.mp3在'File'目录中,我建议用Sound.URL = "Ping.mp3"
替换Sound.URL = "FilePing.mp3"
。
另一答案
无需使用批处理,您不必cd到该文件夹。如果您确实使用批处理,请确保它是启动脚本的cscript.exe而不是wscript.exe。只需使用URL中的完整路径即可。如果文件不存在,您将获得“冻结”。
它有助于在控制台中显示一些信息,以便您知道脚本暂停的位置,原始调试..
以下适用于我的系统。
Set Sound = CreateObject("WMPlayer.OCX")
Wscript.echo "Media player loaded"
Sound.settings.volume = 50
Sound.URL = "C:Usersuservbscriptmp3ping.mp3"
Wscript.echo "start playing"
Sound.Controls.play
while Sound.Playstate <> 1
Wscript.echo Sound.currentmedia.duration
Wscript.sleep 100
wend
以上是关于VBS文件从批处理文件中的其他目录运行时冻结的主要内容,如果未能解决你的问题,请参考以下文章