Как получить код завершения «Результат последнего запуска планировщика заданий» для пакетного сценария? - PullRequest
4 голосов
/ 22 июля 2011

Мне нужно знать, успешно ли выполнена задача, чтобы я мог создать событие в журнале приложений, сообщив об этом. Есть ли способ получить это в коде? Я попробовал следующее:

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

Но я получаю 0 каждый раз, даже если я остановлю его преждевременно (0x41306) или пока задача еще выполняется (должно быть 0x41301). У кого-нибудь есть какие-либо идеи? Спасибо.

Я нашел обходной путь к этому. Вместо того, чтобы получить код завершения задачи, я получил код завершения пакетного сценария, который фактически выполняется, и если он не равен 0, я создаю событие приложения ошибки, в противном случае это событие приложения успеха.

1 Ответ

0 голосов
/ 29 октября 2013

Следующий пакетный файл принимает параметр имени задачи, например, если вы назвали файл 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
...