Planifier un travail à partir de la ligne de commande Windows?

15

Sous Linux, il y a cron job et at job. Existe-t-il un moyen de planifier un travail à partir de la ligne de commande sous Windows?

L' interface graphique du Planificateur de tâches n'est pas ce que je recherche. Je dois modifier un script pour planifier un événement à une certaine condition ... il doit donc y avoir un moyen d'appeler cela à partir de la ligne de commande.

fixateur1234
la source

Réponses:

13

Windows a également un "au travail". Bien que la syntaxe soit un peu différente.

C: \ Documents and Settings \ Administrator> at /?
La commande AT planifie les commandes et les programmes à exécuter sur un ordinateur à
une heure et une date spécifiées. Le service Schedule doit être en cours d'exécution pour utiliser
la commande AT.

AT [\\ nomordinateur] [[id] [/ DELETE] | / SUPPRIMER [/ OUI]]
À l'heure de [\\ nom_ordinateur] [/ INTERACTIVE]
    [/ CHAQUE: date [, ...] | / NEXT: date [, ...]] "commande"

\\ nomordinateur Spécifie un ordinateur distant. Les commandes sont planifiées sur le
                   ordinateur local si ce paramètre est omis.
id est un numéro d'identification attribué à un programme
                   commander.
/ delete Annule une commande planifiée. Si id est omis, tous les
                   les commandes planifiées sur l'ordinateur sont annulées.
/ yes Utilisé avec la commande d'annulation de tous les travaux lorsque rien de plus
                   une confirmation est souhaitée.
heure Spécifie l'heure à laquelle la commande doit être exécutée.
/ interactive Permet au travail d'interagir avec le bureau de l'utilisateur
                   qui est connecté au moment de l'exécution du travail.
/ every: date [, ...] Exécute la commande chaque jour spécifié de la semaine ou
                   mois. Si la date est omise, le jour du mois en cours
                   est assumé.
/ next: date [, ...] Exécute la commande spécifiée lors de la prochaine occurrence du
                   jour (par exemple, jeudi prochain). Si la date est omise, le
                   le jour courant du mois est supposé.
"commande" Est la commande ou le programme batch de Windows NT à exécuter.

Exemple:

at 9:00 /interactive notepad.exe

Cela entraînera l' ouverture du bloc-notes de manière interactive pour l'utilisateur à 9h00 du matin.

John T
la source
3
"at" est déconseillé au moment où nous parlons. "schtasks" est la voie à suivre maintenant. Vous pourriez peut-être changer la bonne réponse.
Marius
15

Utilisez la commande schtasks . Il a plus d'options que la atcommande et quelques jolies comme /mo LASTDAYle dernier jour du mois:

schtasks planifie les commandes et les programmes pour qu'ils s'exécutent périodiquement ou à une heure spécifique. Ajoute et supprime des tâches de la planification, démarre et arrête les tâches à la demande, affiche et modifie les tâches planifiées.

Syntaxe:

schtasks / create / tn TaskName / tr TaskRun / sc planning [/ mo modifier]
         [/ d jour] [/ m mois [, mois ...] [/ i IdleTime] [/ st StartTime] 
         [/ sd StartDate] [/ ed EndDate] [/ s ordinateur [/ u 
         [domaine \] mot de passe utilisateur / p]] 
         [/ ru {[Domaine \] Utilisateur | "Système"} [/ Mot de passe rp]] /?
splattne
la source
1

Écrivez un script shell Windows pour le faire en utilisant un programme de veille pour le retard:

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

Exécutez-le dans sa propre fenêtre shell. Configurez cmd.exe pour qu'il s'exécute à la mise sous tension avec ce script. sleepdort pendant un certain nombre de secondes:

#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;
}
Henrik
la source