当调度程序因特定错误代码而失败时,如何让调度程序重试该任务?

当调度程序因特定错误代码而失败时,如何让调度程序重试该任务?

我有一个 cmd 文件,它执行一个应用程序 (exe),在某些情况下可能会返回特定的错误代码。此 cmd 由 Scheduler 每天启动。
如果它因这个特定错误而失败,我希望能够每 30 分钟重新安排并重试该任务最多 3 次或在接下来的 2 小时内重试,然后放弃直到第二天。

我如何将错误代码传递给调度程序以使其自动重试(如果可能的话)或者如何从初始 cmd 创建新的临时故障转移计划任务?

它主要应该在 Win2003 和 Win2008 服务器(x32 或 x64)上运行。

答案1

只需尝试运行您的命令,等待失败并重新运行它。您可以使用ping伪造sleep命令(或从资源工具包中获取 sleep.exe 或破解您自己的或使用 vbscript)。无论如何,只需每天安排此脚本:

@echo first try here
@if not errorlevel 42 goto end
@ping 127.0.0.1 -w 1000 > NUL

@echo second try here
@if not errorlevel 42 goto end
@ping 127.0.0.1 -w 2000 > NUL

@echo third try here
@if not errorlevel 42 goto end
@ping 127.0.0.1 -w 3000 > NUL

@echo will try again tomorrow

:end
@echo finish %errorlevel%

替换42为您感兴趣的退出代码,并替换-w 1000为您每次重试之间等待的毫秒数。

答案2

使用脚本(批处理文件)调用您的应用程序并测试错误代码并有条件地重新执行或退出。

然后安排脚本而不是应用程序。

相关内容