2017-07-19 72 views
0

場景:我們有一些計劃任務(Control-M)運行多個處理程序,其中一些執行.VBS文件(帶參數),從XML文件讀取配置並將其發送到公司的軟件中解釋並將數據加載到表格上。Wscript make程序無法在後臺運行或等待完成

我需要用VBS文件幫助,即如上所述,只能從XML獲取指令,並將其發送到與這些步驟的軟件(也記錄了每個步驟):

  1. 發現XML;

  2. 創建一個對象來登錄軟件(使用XML參數);

    Dim object 
    Set object = CreateObject("service.location.id") 
    
  3. 登錄數據庫(使用XML參數);

    object.Login("DATABASE_NAME") 
    
  4. 選擇哪個數據庫(XML ...);

    object.SelectDatabase("DATABASE_NAME") 
    
  5. 發送命令來啓動負載proccess

    object.LoadRepositoryTable(XML) 
    

的問題是,由於默認的解釋爲wscript,在執行腳本時,它在後臺運行和作業調度器認爲它完成執行並開始下一個工作。

執行上CMD腳本,如果我開始它作爲cscript SCRIPT.vbs等待整個負載proccess完成(它不上後臺運行),我想這樣做,因爲wscript運行的時候 - 因爲既然有很多工作,編輯他們如何調用腳本現在不是一個選項。這包括創建一個.bat文件,將SCRIPT.vbs稱爲cscript

我也嘗試搜索「如何在VB腳本中運行另一個.vbs文件」以cscript運行,但沒有設法使其工作。

我該怎麼辦?

有沒有辦法讓wscript等待負載?

有沒有辦法在傳遞2個參數時在同一個文件夾中調用.vbs(不發送它作爲參數)?

另一個選項,我沒有看到?

編輯:這是我到目前爲止,但我得到「預計結束聲明」。

Dim objShell 
Dim arg_dir 
arg_dir = Wscript.Arguments.Item(0) 
Dim arg_xml 
arg_xml = Wscript.Arguments.Item(1) 
Set objShell = CreateObject("Wscript.Shell") 

objShell.Run "cmd /k cscript ""C:\Folder\Scripts\SCRIPT.vbs" &" "& arg_dir &" "& arg_xml"", 1, True 

回答

1

cscript是解決您的問題。要麼有你的調度運行的每一個的VBScript與cscript.exe,或者(如果由於某種原因,是不可能)使cscript默認腳本宿主運行

wscript.exe //h:cscript 

曾經爲管理員。

即使您修正了最後一行中的語法錯誤,您拼湊在一起的腳本也無法解決您的問題,因爲只要您使用wscript.exe運行它,它仍會立即返回。只要所有這些都在後臺發生,那麼該腳本中的代碼就會同步運行其他腳本並不重要。