【问题标题】:How do I get Task Scheduler Last Run Result exit code for batch script?如何获取批处理脚本的任务计划程序上次运行结果退出代码?
【发布时间】:2011-10-11 02:11:34
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: windows batch-file task scheduler


    【解决方案1】:

    以下批处理文件接受任务名称的参数,例如,如果您将 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 2014-03-15
      • 2015-07-22
      • 2011-01-20
      • 2013-03-01
      相关资源
      最近更新 更多