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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBS文件从批处理文件中的其他目录运行时冻结相关的知识,希望对你有一定的参考价值。

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

Screenshot of the issue

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文件从批处理文件中的其他目录运行时冻结的主要内容,如果未能解决你的问题,请参考以下文章

vbs 脚本 复制文件中遇到的错误

bat批处理文件运行时隐藏cmd窗口

怎么开机自动运行vbs文件!急急急。。。。。

VBS脚本运行批处理文件,不在启动时运行[重复]

vb.net2005中如何调用外部vbs文件

用批处理(vbs也行)控制winrar,将拖到批处理文件上的压缩包,进行修改,把压缩包里ABC文件夹中的文件修