【问题标题】:Wscript make proccess not run on background or wait while finishesWscript 使进程不在后台运行或等待完成
【发布时间】:2017-07-19 15:29:58
【问题描述】:

场景:我们有一些计划的作业 (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)
    

问题在于,由于默认解释器是wscript,所以在执行脚本时,它在后台运行,Job Scheduler 认为它执行完毕并开始下一个作业。

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

我还尝试搜索“如何在 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

【问题讨论】:

    标签: vbscript wsh


    【解决方案1】:

    cscript 是您问题的解决方案。让您的调度程序使用cscript.exe 运行每个 VBScript,或者(如果由于某种原因无法这样做)通过运行将cscript 设置为默认脚本宿主

    wscript.exe //h:cscript
    

    曾经作为管理员。

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

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      相关资源
      最近更新 更多