Pelo menos no Windows Server 2008, você pode usar a seguinte rota:
-
Configure sua tarefa regular usando o agendador de tarefas. Se você precisa capturar a saída do seu programa, estou assumindo que é um programa de linha de comando. Você pode redirecionar a saída do comando a linha de comando do Windows para um arquivo como nos sistemas Unix. Para isso, eu escreveria um lote que executa meu comando e captura sua saída:
@ECHO OFF
REM Run command
mycmd.exe > outfile.txt
REM Check that outfile exists
IF NOT EXIST outfile.txt (
@echo File does not exist
exit 2
)
REM Compare outfile to a known empty file
TYPE nul > blank.txt
FC outfile.txt blank.txt > nul
REM Check result, and remove blank file.
IF errorlevel 1 (
del blank.txt
@echo File is not empty
exit 0
) ELSE (
del blank.txt
@echo File is empty
exit 1
)
-
As tarefas agendadas são registradas no Registro de eventos de aplicativos e serviços, em Microsoft > Windows > Agendador de Tarefas > Operacional.
Você pode então criar uma segunda tarefa que é levantada quando uma entrada é adicionada nesse log.
Você precisa definir o acionador da ação de acordo. O que você precisa fazer é criar um filtro de eventos em 201 eventos (Ação finalizada), cujos nomes de tarefas correspondem ao nome de sua tarefa que executa o script acima e cujo código de resultado é 0. Deve ser possível configurar com o agendador de tarefas UI, ou você pode usar a filtragem XPath.
Em seguida, defina a ação dessa tarefa para "Enviar um email" e defina os parâmetros que precisar. Defina o nome do arquivo anexado para o caminho de outfile.txt e pronto.
-
Você pode usar a mesma técnica para manipular os códigos de retorno 1 e 2, para avisar sobre um arquivo de saída vazio ou ausente, se necessário.
Muito fácil, não? : D Faz-me amar o Linux mais e mais todos os dias.
Editar Se você tiver um programa mailer que funcione na linha de comando, você pode simplesmente chamá-lo do script que executa o comando, eliminando a necessidade de criar a tarefa baseada em evento.