2016-08-16 82 views
2

我有一個調用多個其他腳本的VBScript。 (他們大多是剛剛從NAS文件複製到多個地方的用戶的PC上。.ShellExecute並等待

需要

其中一個VB腳本來運行爲使用.ShellExecute管理員。

它的工作,但也有其他的VB腳本它調用之後依靠它,所以我得到的文件錯誤丟失。

我知道命令

shell.Run "sample.vbs", , True 

等待,直到腳本完成。

有沒有類似的方法來獲得ShellExecute要等待?

回答

2

ShellExecute總是異步運行。如果您還有其他需要在腳本完成後才能運行的腳本,則可以在完成後創建某種標記以向其他腳本發送「去」信號。

例如,你可以在一個特定的路徑創建一個文件:

Set fso = CreateObject("Scripting.FileSystemObject") 
fso.CreateTextFile("C:\path\to\marker.txt", True) 

如果需要運行腳本一次以上的批次,有腳本刪除標記啓動時,並重新創建它在最後。

接下來應該運行的腳本需要檢查這個標記並暫停執行,直到它出現。例如:

Set fso = CreateObject("Scripting.FileSystemObject") 
Do Until fso.FileExists("C:\path\to\marker.txt") 
    WScript.Sleep 100 
Loop 

其他選項正在創建註冊表值或事件日誌條目。

檢查進程列表(例如通過Win32_Process)將不起作用,因爲普通用戶無權訪問高級進程的屬性(這將需要識別此特定進程)。

+0

工作完美,非常感謝! :D:D –