Einen Auftrag über die Windows-Befehlszeile planen?

15

Unter Linux gibt es cron job und at job. Gibt es eine Möglichkeit, einen Auftrag über die Befehlszeile unter Windows zu planen?

Die Task Scheduler- Benutzeroberfläche ist nicht das, wonach ich suche. Ich muss ein Skript ändern, um ein Ereignis unter einer bestimmten Bedingung zu planen. Es muss also eine Möglichkeit geben, dies über die Befehlszeile aufzurufen.

fixer1234
quelle

Antworten:

13

Windows hat auch ein "at job". Die Syntax ist allerdings etwas anders.

C: \ Dokumente und Einstellungen \ Administrator> um /?
Mit dem Befehl AT werden Befehle und Programme so geplant, dass sie auf einem Computer unter ausgeführt werden
eine bestimmte Uhrzeit und ein bestimmtes Datum. Der Zeitplandienst muss ausgeführt werden, um verwendet zu werden
der AT Befehl.

AT [\\ Computername] [[ID] [/ DELETE] | / DELETE [/ YES]]
AT [\\ Computername] Zeit [/ INTERACTIVE]
    [/ JEDES: Datum [, ...] | / NEXT: Datum [, ...]] "Befehl"

\\ Computername Gibt einen Remotecomputer an. Befehle sind auf der geplant
                   Lokaler Computer, wenn dieser Parameter weggelassen wird.
id Ist eine Identifikationsnummer, die einem geplanten Termin zugewiesen wurde
                   Befehl.
/ delete Bricht einen geplanten Befehl ab. Wenn id weggelassen wird, werden alle
                   Geplante Befehle auf dem Computer werden abgebrochen.
/ yes Wird mit dem Befehl "Alle Jobs abbrechen" verwendet, wenn keine weiteren Anweisungen vorliegen
                   Bestätigung ist erwünscht.
Zeit Gibt die Zeit an, zu der der Befehl ausgeführt werden soll.
/ interactive Ermöglicht dem Job, mit dem Desktop des Benutzers zu interagieren
                   Wer ist zum Zeitpunkt der Jobausführung angemeldet?
/ every: date [, ...] Führt den Befehl an jedem angegebenen Wochentag oder an jedem angegebenen Wochentag aus
                   Monat. Wenn das Datum weggelassen wird, wird der aktuelle Tag des Monats angezeigt
                   wird angenommen.
/ next: date [, ...] Führt den angegebenen Befehl beim nächsten Auftreten von aus
                   Tag (zum Beispiel nächsten Donnerstag). Wenn das Datum weggelassen wird, wird das
                   Es wird der aktuelle Tag des Monats angenommen.
"Befehl" Ist der Windows NT-Befehl oder das auszuführende Stapelverarbeitungsprogramm.

Beispiel:

at 9:00 /interactive notepad.exe

Dadurch wird Notepad morgens um 9:00 Uhr interaktiv für den Benutzer geöffnet.

John T
quelle
3
"at" ist veraltet, während wir sprechen. "schtasks" ist jetzt der richtige Weg. Vielleicht könntest du die richtige Antwort ändern.
Marius
15

Verwenden Sie den Befehl schtasks . Es hat mehr Optionen als der atBefehl und einige nette wie /mo LASTDAYfür den letzten Tag des Monats:

schtasks plant, dass Befehle und Programme regelmäßig oder zu einer bestimmten Zeit ausgeführt werden. Fügt dem Zeitplan Aufgaben hinzu und entfernt sie, startet und stoppt Aufgaben bei Bedarf und zeigt geplante Aufgaben an und ändert sie.

Syntax:

schtasks / create / tn Aufgabenname / tr TaskRun / sc Zeitplan [/ mo Modifikator]
         [/ d Tag] [/ m Monat [, Monat ...] [/ i IdleTime] [/ st StartTime] 
         [/ sd StartDate] [/ ed EndDate] [/ s Computer [/ u 
         [domain \] benutzer / p passwort]] 
         [/ ru {[Domain \] Benutzer | "System"} [/ rp Passwort]] /?
splattne
quelle
1

Schreiben Sie ein Windows-Shell-Skript, um die Verzögerung mithilfe eines Ruhezustands zu verzögern:

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

Führen Sie es in einem eigenen Shell-Fenster aus. Konfigurieren Sie cmd.exe so, dass es beim Einschalten mit diesem Skript ausgeführt wird. sleepschläft für einige Sekunden:

#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
quelle