it-swarm-pt.tech

Agendar um trabalho na linha de comando do Windows?

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

O Agendador de tarefas GUI não é o que procuro. Devo modificar um script para agendar um evento sob uma determinada condição ... portanto, deve haver uma maneira de chamar isso da linha de comando.

15
demetri

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

C:\Documents and Settings\Administrator> em /?
The AT agenda comandos e programas para serem executados em um computador em 
 Uma data e hora especificadas. O serviço Schedule deve estar em execução para usar 
 O comando AT. 
 
 AT [\\ computername] [[id] [/ DELETE] |/DELETE [/YES]]
AT [\\ computername] time [/INTERACTIVE]
 [/ EVERY: date [ ...] |/NEXT: date [ ... ]] "command" 
 
 \\ computername Especifica um computador remoto. Os comandos são agendados no computador local 
 se este parâmetro for omitido. 
 id É uma identificação número atribuído a um comando agendado 
. 
/delete Cancela um comando agendado. Se id for omitido, todos os comandos 
 agendados no computador são cancelados. 
/sim Usado com o comando cancelar todos os trabalhos quando nenhuma confirmação 
 for desejada. 
 Especifica a hora em que o comando deve ser executado. 
/Interativo Permite que o trabalho interaja com a área de trabalho do usuário 
 Que está conectado no momento em que o trabalho é executado. 
/A cada : data [ ...] Executa o comando em cada dia (s) da semana ou 
 mês especificado. Se a data for omitida, o dia atual do mês 
 Será assumido. 
/Próximo: data [ ...] Executa o comando especificado na próxima ocorrência do dia 
 (por exemplo, na próxima quinta-feira). Se a data for omitida, o dia atual do mês 
 Será assumido. 
 "Comando" É o comando do Windows NT ou o programa em lote a ser executado.

Exemplo:

at 9:00 /interactive notepad.exe

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

13
John T

Use o comando schtasks . Ele tem mais opções do que o comando at e algumas opções legais como /mo LASTDAY para o último dia do mês:

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

Sintaxe:

 schtasks/create/tn TaskName/tr TaskRun/sc schedule [/ mo modificador] 
 [/ d dia] [/ m mês [ mês ...] [/ i IdleTime] [/ st StartTime] 
 [/ sd StartDate] [/ ed EndDate] [/ s computer [/ u 
 [domain \] user/p password]] 
 [/ ru {[ Domínio \] Usuário | "Sistema"} [/ rp senha]] /? 
15
splattne

Escreva um script do Windows Shell para fazer isso usando um programa de suspensão para atrasar:

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

Execute-o em uma janela Shell própria. Configure o cmd.exe para ser executado na inicialização com este script. sleep dorme 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;
}
1
Henrik