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

Windows 如何获取批处理脚本的任务计划程序上次运行结果退出代码?,windows,batch-file,task,scheduler,Windows,Batch File,Task,Scheduler,我需要知道任务是否成功运行,以便我可以在应用程序日志中创建一个这样的事件。有没有一种方法可以将其编码?我尝试了以下方法: echo ErrorLevel of "c:\windows\system32\tasks\my task" = %ErrorLevel% 但是每次我都得到0,即使我过早地停止它(0x41306)或者当任务仍在运行时(应该是0x41301)。有人有什么想法吗?多谢各位 我找到了解决办法。我没有获取任务的退出代码,而是获取了实际运行的批处理脚本的退出代码,如果它不是0,那么我

我需要知道任务是否成功运行,以便我可以在应用程序日志中创建一个这样的事件。有没有一种方法可以将其编码?我尝试了以下方法:

echo ErrorLevel of "c:\windows\system32\tasks\my task" = %ErrorLevel%
但是每次我都得到0,即使我过早地停止它(0x41306)或者当任务仍在运行时(应该是0x41301)。有人有什么想法吗?多谢各位


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

下面的批处理文件接受任务名称的参数,例如,如果您将bat文件命名为“getresult.bat”您可以调用“getresult GoogleUpdateTaskMachineCore”(如果名称有空格,请在其周围加引号)

这是非常冗长的,所以让我知道,如果你需要帮助调整它,以适应你的需要

经过测试并在Windows8下工作,我相信它也应该适用于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