我有一个windows服务器,用于为邮政信件执行邮件合并。外部服务器生成xls数据表,并将它们与JSON文件一起发送到我的windows服务器,并提供进一步的说明:
脚本的工作方式如下: 1.经常(每60秒)监视JSON文件的目录。如果有一个->文件,解析它。-> 3.查找与该->文件相关的XLS文件。运行VBA/ ->宏将XLS和信件合并为PDF -> 5。通过电子邮件将-> 6发送到适当的联系人->6。将XLS文件移动到已处理的文件夹7。将->文件移动到PRocessed文件夹。
如果我从命令行手动运行它,它就能正常工作。但是,如果我从Task运行它,则使用" 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“
条件:只有当计算机处于交流电源停止时,如果计算机切换到电池电源,才启动任务
设置:允许任务按需运行,如果正在运行的任务没有在请求时结束,则强制其停止
有人能给我建议如何更改计划的任务或批处理文件使其工作吗?
发布于 2016-06-17 15:59:07
原来面条是对的--这是代码中的一些东西。
我创建了一个文件系统对象,并使用它获得了一个File.Name。然后,我将这个File.Name(没有路径)传递给一个解析文件中JSON的函数。当我手动运行它时,它工作得很好。
JSONExists(File.Name)为了从中正确运行,我必须确保它传递了整个文件名,包括路径。
FPath = "C:\Automerge\"
JSONExists(FPath & File.Name)我不太清楚为什么我需要任务调度器的整个路径,而不是当我手动运行时,但至少现在我有一个很好的经验法则。
发布于 2016-06-16 03:17:30
尝试像这样执行,而不是直接调用批处理文件。
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位.更新您的脚本以执行%SYSTEMROOT%\SysWOW64\cscript.exe
https://stackoverflow.com/questions/37845701
复制相似问题