从命令行启动EasySQLMAIL中的信息推送任务
想在自己写的Windows批处理命令(BAT程序)中启动EasySQLMAIL中的任务,可以实现吗?
EasySQLMAIL从1.0.1213版本开始提供了从命令行启动信息发布任务的功能。本文向您介绍如何在命令行中执行信息发布任务。
01 在任务配置中启用“允许从DOS命令行中启动此任务”选项
为了能够从命令行启动指定的任务,管理员需要先在EasySQLMAIL的任务配置界面中启用指定任务的“允许从DOS命令行中启动此任务”选项。
02 在命令行中启动任务您可以在Windows命令行中通过如下命令启动要执行的任务。
sqlmail.exe 204 要执行的任务ID
其中,sqlmail.exe的位置在EasySQLMAIL安装目录下的bin目录中。命令的第一个参数"204"表示启动一个任务,第二个参数是要启动的任务ID。任务ID可以在任务管理界面中查询到。
例如,要在命令行中启动上面截图中的ID为12的任务时,可以用如下命令:
sqlmail.exe 204 12
03 命令执行后,会返回以下代码:
0 任务实例已生成。(注意:返回0只表示任务实例已经生成,并不代表信息推送任务已经执行成功。任务实例还要由EasySQLMAIL调度后才能执行)
991 执行命令失败。查询任务控制服务日志了解详细原因。
992 版本不支持此功能。请检查您使用的EasySQLMAIL版本是否支持此特性。
993 发送命令失败,主程序可能未启动。请检查EasySQLMAIL系统是否启动。
994 任务ID不存在。请检查任务ID是否正确。
995 任务已被管理员停用,不能执行。
996 生成任务实例时失败。请查询任务控制服务日志了解详细原因。
997 任务配置不允许从命令行启动此任务。
您可以在调用sqlmail.exe后通过Windows命令行的%errorlevel%变量获得命令的返回代码。
04 应用案例
下面的代码可以在Windows批处理文件中对指定的IP地址进行PING测试,如果测试失败,就调用EasySQLMAIL中的任务向管理员发送提示邮件。
@ECHO OFF
REM 此演示中对IP地址进行PING测试,如果不通,就调用EasySQLMAIL中的ID为14的信息推送任务向管理员发送提示邮件
SET IP=192.168.100.1
ping -n 1 %IP% | find "TTL="
if %ERRORLEVEL% EQU 0 goto SUCCEED
ECHO PING不通
REM 这里调用EasySQLMAIL中的ID为14的信息推送任务向管理员发送提示邮件
F:\EasySQLMAIL\bin\sqlmail.exe 204 14 GOTO END
:SUCCEED
ECHO PING通了
:END
05 需要注意的问题
(1)通过命令行启动任务时,EasySQLMAIL系统必须正在运行,否则任务无法启动。
(2)命令执行时,生成任务实例后会立即返回,不会等待任务执行完成后再返回。因此命令返回0时只表示生成任务实例成功,并不代表任务已执行成功。