Agendar um trabalho na linha de comando do Windows?


15

No Linux, há cron job e no job. Existe uma maneira de agendar um trabalho na linha de comando no Windows?

A GUI do Agendador de tarefas não é o que estou procurando. Preciso modificar um script para agendar um evento sob uma determinada condição ... portanto, deve haver uma maneira de chamar isso na linha de comando.

Respostas:


13

O Windows também possui um "trabalho". Embora a sintaxe seja um pouco diferente.

C: \ Documents and Settings \ Administrador> em /?
O comando AT agenda comandos e programas para execução em um computador em
uma hora e data especificadas. O serviço de agendamento deve estar em execução para usar
o comando AT.

AT [\\ nomedocomputador] [[id] [/ DELETE] | / EXCLUIR [/ SIM]]
À hora [\\ nomedocomputador] [/ INTERACTIVE]
    [/ TODOS: data [, ...] | / NEXT: date [, ...]] "command"

\\ nome_do_computador Especifica um computador remoto. Os comandos estão agendados no
                   computador local se este parâmetro for omitido.
id É um número de identificação atribuído a um programado
                   comando.
/ delete Cancela um comando agendado. Se id for omitido, todos os
                   comandos agendados no computador são cancelados.
/ yes Usado com o comando cancelar todas as tarefas quando não houver mais
                   confirmação é desejada.
hora Especifica a hora em que o comando deve ser executado.
/ interativo Permite que o trabalho interaja com a área de trabalho do usuário
                   quem está conectado no momento em que o trabalho é executado.
/ every: date [, ...] Executa o comando em cada dia especificado da semana ou
                   mês. Se a data for omitida, o dia atual do mês
                   é assumido.
/ next: date [, ...] Executa o comando especificado na próxima ocorrência do
                   dia (por exemplo, na próxima quinta-feira). Se a data for omitida, o
                   o dia atual do mês é assumido.
"command" É o comando do Windows NT ou o programa em lotes a ser executado.

Exemplo:

at 9:00 /interactive notepad.exe

Isso fará com que o Bloco de notas seja aberto interativamente para o usuário às 9:00 da manhã.


3
"at" está obsoleto enquanto falamos. "schtasks" é o caminho a percorrer agora. Talvez você possa alterar a resposta correta.
Marius

15

Use o comando schtasks . Possui mais opções do que o atcomando e algumas opções agradáveis, como /mo LASTDAYno último dia do mês:

O schtasks agenda comandos e programas para serem executados periodicamente ou em um horário específico. Adiciona e remove tarefas da agenda, inicia e interrompe tarefas sob demanda e exibe e altera as tarefas agendadas.

Sintaxe:

schtasks / create / tn TaskName / tr TaskRun / sc schedule [/ mo modifier]
         [/ d dia] [/ m mês [, mês ...] [/ i IdleTime] [/ st StartTime] 
         [/ sD StartDate] [/ ed EndDate] [/ s computador [/ u 
         [domínio \] usuário / senha p]] 
         [/ ru {[Domínio \] Usuário | "Sistema"} [/ rp Senha]] /?

1

Escreva um script de shell do Windows para fazer isso usando um programa de suspensão por atraso:

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

Execute-o em uma janela de shell própria. Configure o cmd.exe para executar na inicialização com este script. sleepdorme por alguns segundos:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <Windows.h>

int main(int argc, char* argv[])
{
    int n = atoi(argv[1]);

    Sleep(n * 1000);

    return 0;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.