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