Pianificare un lavoro dalla riga di comando di Windows?


15

Su Linux c'è cron job e al lavoro. C'è un modo per pianificare un lavoro dalla riga di comando su Windows?

La GUI di Task Scheduler non è ciò che sto cercando. Devo modificare uno script per pianificare un evento a una determinata condizione ... quindi ci deve essere un modo per chiamarlo dalla riga di comando.

Risposte:


13

Windows ha anche un "al lavoro". Sebbene la sintassi sia leggermente diversa.

C: \ Documents and Settings \ Administrator> at /?
Il comando AT pianifica comandi e programmi da eseguire su un computer su
una data e ora specificate. Il servizio di pianificazione deve essere in esecuzione per poter essere utilizzato
il comando AT.

AT [\\ nomecomputer] [[id] [/ DELETE] | / DELETE [/ YES]]
AT [\\ nomecomputer] ora [/ INTERACTIVE]
    [/ OGNI: data [, ...] | / NEXT: date [, ...]] "comando"

\\ nomecomputer Specifica un computer remoto. I comandi sono programmati sul
                   computer locale se questo parametro viene omesso.
id È un numero di identificazione assegnato a un programmato
                   comando.
/ delete Annulla un comando programmato. Se id viene omesso, tutto il file
                   i comandi programmati sul computer vengono annullati.
/ yes Utilizzato con il comando Annulla tutti i lavori quando non è più necessario
                   si desidera la conferma.
time Specifica l'ora in cui eseguire il comando.
/ interattivo Consente al lavoro di interagire con il desktop dell'utente
                   chi è connesso al momento dell'esecuzione del lavoro.
/ every: date [, ...] Esegue il comando ogni giorno o giorni della settimana specificati o
                   mese. Se la data viene omessa, il giorno corrente del mese
                   è assunto.
/ next: date [, ...] Esegue il comando specificato alla successiva occorrenza di
                   giorno (ad esempio, giovedì prossimo). Se la data viene omessa, il
                   si presume il giorno corrente del mese.
"comando" È il comando di Windows NT o il programma batch da eseguire.

Esempio:

at 9:00 /interactive notepad.exe

Ciò farà sì che Blocco note si apra in modo interattivo per l'utente alle 9:00 del mattino.


3
"at" è deprecato mentre parliamo. "schtasks" è la strada da percorrere ora. Forse potresti cambiare la risposta corretta.
Marius, l'

15

Usa il comando schtasks . Ha più opzioni del atcomando e alcune belle come /mo LASTDAYper l'ultimo giorno del mese:

schtasks pianifica comandi e programmi da eseguire periodicamente o in un momento specifico. Aggiunge e rimuove le attività dalla pianificazione, avvia e arresta le attività su richiesta e visualizza e modifica le attività pianificate.

Sintassi:

schtasks / create / tn TaskName / tr TaskRun / sc schedule [/ mo modificatore]
         [/ d day] [/ m month [, month ...] [/ i IdleTime] [/ st StartTime] 
         [/ sd StartDate] [/ ed EndDate] [/ s computer [/ u 
         [dominio \] utente / password p]] 
         [/ ru {[Dominio \] Utente | "Sistema"} [/ rp Password]] /?

1

Scrivi uno script di shell di Windows per farlo usando un programma di sospensione per il ritardo:

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

Eseguilo in una finestra shell propria. Configurare cmd.exe per l'esecuzione all'accensione con questo script. sleepdorme per alcuni secondi:

#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;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.