Wscript使proccess不在后台运行或在完成时等待

时间:2017-07-19 15:29:58

标签: vbscript wsh

场景:我们有一些预定的作业(Control-M)运行许多过程,其中一些执行.VBS文件(带参数)从XML文件读取配置并将其发送到公司的软件,解释它和将数据加载到表格上。

我需要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. 发送命令以启动加载进程

    object.LoadRepositoryTable(XML)
    
  6. 问题在于,由于默认解释器为wscript,因此在执行脚本时,它在后台运行,Job Scheduler认为它已完成执行并开始下一个作业。

    在CMD上执行脚本,如果我以cscript SCRIPT.vbs启动它等待整个加载过程完成(它不在后台运行),我想在{{1}运行时执行此操作因为有很多工作,所以编辑他们调用脚本的方式现在不是一个选择。这包括创建一个将wscript称为SCRIPT.vbs的.bat文件。

    我还尝试搜索“如何在VB脚本中运行另一个.vbs文件”以cscript运行,但无法使其正常工作。

    我该怎么办?

    有没有办法让cscript等待加载?

    有没有办法在传递2个参数时在同一个文件夹中调用.vbs(不将其作为参数发送)?

    我没有看到另一种选择?

    编辑:这是我到目前为止所得到的,但我得到了“期待的结​​束声明”。

    wscript

1 个答案:

答案 0 :(得分:1)

cscript是解决您问题的方法。让调度程序使用cscript.exe运行每个VBScript,或者(如果由于某种原因不可能)通过运行

使cscript成为默认脚本宿主
wscript.exe //h:cscript

作为管理员。

您拼凑在一起的脚本无法解决您的问题,即使您在最后一行修复了语法错误,因为只要您使用wscript.exe运行它,它仍会立即返回。只要所有这些都在后台发生,该脚本中的代码同步运行其他脚本并不重要。