如何获取批处理脚本的任务计划程序上次运行结果退出代码?

时间:2011-07-22 13:57:27

标签: windows batch-file task scheduler

我需要知道任务是否成功运行,因此我可以在应用程序日志中创建一个事件。有没有办法在代码中得到这个?我尝试了以下方法:

echo ErrorLevel of "c:\windows\system32\tasks\my task" = %ErrorLevel%

但我每次都得0,即使我提前停止(0x41306)或任务仍然在运行(应该是0x41301)。有没有人有任何想法?谢谢。

我找到了解决方法。我没有得到任务的退出代码,而是获得了实际运行的批处理脚本的退出代码,如果它不是0,那么我会创建一个错误的应用程序事件,否则它就是一个成功的应用程序事件。

1 个答案:

答案 0 :(得分:0)

以下批处理文件接受任务名称的参数,例如,如果您将bat文件命名为“getresult.bat”,则称其为“getresult GoogleUpdateTaskMachineCore”(如果名称包含空格,则在其周围加上引号)。

这是非常详细的,所以如果您需要帮助以适应您的需求,请告诉我。

在Windows 8中经过测试和工作,我相信它也适用于XP / Vista / 7。

@ECHO OFF

IF %1=="" GOTO EXITNOINPUT

ECHO Checking Tasks for "%1"...

FOR /F "tokens=2delims=:" %%I IN ('schtasks /tn %1 /fo LIST /v ^| FIND "Last Result"') DO (
    SET result=%%I
)

IF NOT DEFINED result GOTO EXITNOTFOUND

ECHO Done...
ECHO The Last Result Was:  %result%

GOTO EXITNORMAL

:EXITNOTFOUND
echo The scheduled task was not found.
GOTO EXITNORMAL


:EXITNOINPUT
echo You must provide a query. (getresult servicename)
GOTO EXITNORMAL

:EXITNORMAL