我需要知道任务是否成功运行,这样我就可以在应用程序日志中创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