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

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

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

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

我find了一个解决方法。 我没有得到任务的退出代码,而是得到了实际运行的批处理脚本的退出代码,如果它不是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 

感谢斯科特,

要添加到你的,至少与我的版本的Windows(服务器2008年)执行schtasks的代码是缺少'/查询'参数。 否则,我收到一条错误消息。

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