【问题标题】:VBS script does not work properly from Task Scheduler in Windows 10VBS 脚本在 Windows 10 中的任务计划程序中无法正常工作
【发布时间】:2016-06-15 21:01:16
【问题描述】:

我有一个 Windows 服务器,用于执行邮政信件的邮件合并。 外部服务器生成 xls 数据表并将它们 SFTPS 到我的 Windows 服务器,以及带有进一步说明的 JSON 文件:

  • 要合并的信函(docx 文件)
  • 用于发送合并信件 PDF 的电子邮件地址。

脚本的工作方式如下: 1. 持续(每 60 秒)监控 JSON 文件的目录。 -> 2.如果有JSON文件,解析它。 -> 3. 查找与该 JSON 文件相关的 XLS 文件 -> 4. 运行 VBA/EXCEL 宏将 XLS 和信函合并成 PDF -> 5. 通过电子邮件将 PDF 发送给适当的联系人 -> 6. 将 XLS 文件移动到已处理文件夹 7. 将 JSON 文件移动到已处理文件夹

如果我从命令行手动运行它就可以了。但是,如果我从任务计划程序运行它,无论是使用“RUN”还是在机器重新启动或给定用户登录脚本失败时自动运行。步骤 1、2 和 3 有效。 VBA 代码/宏无法工作。

我希望这可以通过配置任务计划程序来解决。这是我目前的设置:

脚本从 bat 文件运行,消息脚本保持打开 CMD 窗口,解释脚本正在做什么:

cscript C:\automerge\message.vbs
cscript C:\automerge\automerge.vbs >> C:\automerge\logs.log

任务计划程序设置: 仅在用户登录时运行 以最高权限运行 为 Windows 10 配置(也尝试使用 7 和 8)

触发器: 登录时触发 - 启用

行动: 启动程序 细节: "C:\AutoMerge\JSON Watch.bat"

条件: 仅在计算机使用交流电源时启动任务 如果计算机切换到电池供电则停止

设置: 允许任务按需运行 如果正在运行的任务在请求时没有结束,则强制它停止

谁能给我建议如何更改计划任务或批处理文件以使其正常工作?

【问题讨论】:

  • 您需要出示您的代码。
  • @Noodles 理想情况下,这确实属于 SuperUser 堆栈,因为它是一般的 Windows 调度任务问题与代码问题。
  • 也许不是。特别是我想看看是否正在使用任何依赖于配置的东西,比如映射驱动器。

标签: windows vba batch-file vbscript scheduled-tasks


【解决方案1】:

尝试像这样执行而不是直接调用批处理文件。

32 位

Action: "%SYSTEMROOT%\system32\cmd.exe /c C:\AutoMerge\JSON Watch.bat"

或 64 位

Action: "%SYSTEMROOT%\SysWOW64\cmd.exe /c C:\AutoMerge\JSON Watch.bat"

如果是 64 位...更新你的 cscript 以执行 %SYSTEMROOT%\SysWOW64\cscript.exe

【讨论】:

    【解决方案2】:

    事实证明 Noodles 是对的,它是在代码中。

    我创建了一个文件系统对象并使用它来获取 File.Name。然后我将此 File.Name(不带路径)传递给解析文件中 JSON 的函数。当我手动运行它时,它工作得很好。

    JSONExists(File.Name)
    

    为了从任务计划程序中正常运行,我必须确保它传递了包括路径在内的整个文件名。

    FPath = "C:\Automerge\"    
    JSONExists(FPath & File.Name)
    

    我不确定为什么我需要使用任务计划程序的整个路径,而不是手动运行时,但至少现在我有一个很好的经验法则。

    【讨论】:

      猜你喜欢
      • 2018-12-02
      • 2021-10-24
      • 2016-02-11
      • 2020-12-05
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      相关资源
      最近更新 更多