[英]VBS file Freezes when run from a different directory in a Batch file
我有一個編程為運行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命令,但事實並非如此。
任何幫助,將不勝感激。
我沒有網絡資料,但是當Ping.mp3位於“文件”目錄(Ping.vbs所在的目錄)時,我使用您的代碼復制了“凍結”。 當mp3與批處理文件位於同一目錄時播放。 這意味着vbs看到的“當前目錄”是(仍然) pushd %~dp0
給出的目錄。 因此,如果你的Ping.mp3在'File'目錄中,我建議用Sound.URL = "Ping.mp3"
Sound.URL = "File\\Ping.mp3"
替換Sound.URL = "Ping.mp3"
。
無需使用批處理,您不必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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.