2017-07-19 10 views
0

シナリオ:いくつかのスケジュールされたジョブ(Control-M)には多くのプロセスが実行されており、その中にはXMLファイルから構成を読み取る.VBSファイルこれを解釈してテーブルにデータをロードする企業のソフトウェアに送信します。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. 問題は、デフォルトのインタープリターはwscriptあるので、スクリプトを実行するときに、それがバックグラウンドで実行され、ジョブスケジューラが考えることである負荷proccessに

    object.LoadRepositoryTable(XML) 
    

を起動するコマンドを送信します実行を終了し、次のジョブを開始します。

CMDでスクリプトを実行すると、cscript SCRIPT.vbsという名前で起動すると、ロード・プロセス全体が終了するのを待っています(バックグラウンドでは実行されません)。実行中はwscriptです。彼らがスクリプトをどのように呼び出すか編集することは、現在、オプションではありません。これには、SCRIPT.vbscscriptと呼び出す.batファイルの作成が含まれます。

「VBスクリプト内で別の.vbsファイルを実行する方法」を検索して、cscriptとして実行しましたが、動作させることはできませんでした。

どうすればよいですか?

wscriptは負荷を待つ方法がありますか?

2つの引数を渡している間に同じフォルダ内の.vbsを(パラメータとして送信せずに)呼び出す方法はありますか?

もう1つのオプションは表示されませんか?

編集:これまでのところ私はこれまでに来たことはありますが、私は「期待通りの終わり」を得ています。

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は、問題の解決方法です。どちらか(それが何らかの理由でできない場合)あなたのスケジューラは、管理者として一度

wscript.exe //h:cscript 

を実行することにより、 cscript既定のスクリプトホストを作る cscript.exeと各VBScriptを実行する、または持っています。

wscript.exeで実行しても、すぐに戻りますので、最後の行に構文エラーを修正しても、一緒に結んだスクリプトは問題を解決しません。そのスクリプト内のコードが、バックグラウンドで起こっている限り、他のスクリプトを同期して実行していることは重要ではありません。

関連する問題