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

标签 windows batch-file task scheduler

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

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

但我每次都得到 0,即使我过早地停止它 (0x41306) 或在任务仍在运行时(应该是 0x41301)。有人有什么想法吗?谢谢。

我找到了一个解决方法。我没有获取任务的退出代码,而是获取了实际运行的批处理脚本的退出代码,如果它不是 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 - 如何获取批处理脚本的任务计划程序上次运行结果退出代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6791115/

相关文章:

python-3.x - 在 Google 表格或 Python 中的 Excel 中截取范围的屏幕截图?

java - 在开始另一个任务之前等待一个任务在 Java 中完成

java - 如何使JavaFX服务中的任务不断接受参数?

windows - 如何更改 ftp "network drives"的 Windows 7 默认 View ?

windows - 'fc' 不是内部或外部命令,也不是可运行的程序或批处理文件

c# - 我如何通知其他应用程序我的应用程序是 Windows 桌面的一部分?

batch-file - 批处理文件中的更改目录命令不起作用

windows - 通过启动命令返回变量

batch-file - 仅当之前已多次启用 RDP 时,通过更改注册表设置来启用 RDP 才有效

linux - 在交换器中执行时,Linux 内核模块中的任务所有者 pid