我有一个Windows服务器,旨在为邮政信件执行邮件合并。 外部服务器生成xls数据表并将它们SFTPS到我的Windows服务器,以及带有进一步说明的JSON文件:
脚本的工作原理如下: 1.持续(每60秒)监视JSON文件的目录。 - > 2.如果有JSON文件,请解析它。 - > 3.找到与该JSON文件相关的XLS文件 - > 4.运行VBA / EXCEL宏将邮件合并XLS和信件合并为PDF - > 5.将PDF发送给适当的联系人 - > 6.将XLS文件移动到已处理文件夹 7.将JSON文件移动到PRocessed文件夹
如果我从命令行手动运行它可以正常工作。但是,如果我从任务计划程序运行它,可以使用“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”
条件: 仅在计算机处于交流电源时才启动任务 如果计算机切换到电池电量,则停止
设置: 允许任务按需运行 如果正在运行的任务未在请求时结束,则强制其停止
有人可以就如何更改计划任务或批处理文件向我提供建议吗?
答案 0 :(得分:0)
尝试执行此操作,而不是直接调用批处理文件。
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
答案 1 :(得分:0)
原来Noodles是对的,这是代码中的东西。
我创建了一个文件系统对象并用它来获取File.Name。然后我将这个File.Name(没有路径)传递给一个解析文件中JSON的函数。当我手动运行它时,这很好用。
JSONExists(File.Name)
为了从Task Scheduler正常运行,我必须确保它传递整个文件名,包括路径。
FPath = "C:\Automerge\"
JSONExists(FPath & File.Name)
我不确定为什么我需要使用任务计划程序的整个路径,而不是在我手动运行时,但至少现在我有一个很好的经验法则。