簡體   English   中英

VBS文件從批處理文件中的其他目錄運行時凍結

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM