Jadwalkan pekerjaan dari baris perintah Windows?

15

Pada Linux ada cron job dan di pekerjaan. Apakah ada cara untuk menjadwalkan pekerjaan dari baris perintah di Windows?

The Task Scheduler GUI tidak apa yang saya setelah. Saya harus memodifikasi skrip untuk menjadwalkan acara berdasarkan kondisi tertentu ... jadi harus ada cara untuk memanggil ini dari baris perintah.

fixer1234
sumber

Jawaban:

13

Windows juga memiliki "di tempat kerja". Meskipun sintaksnya sedikit berbeda.

C: \ Documents and Settings \ Administrator> di /?
Perintah AT menjadwalkan perintah dan program untuk dijalankan pada komputer di
waktu dan tanggal yang ditentukan. Layanan Jadwal harus berjalan untuk digunakan
perintah AT.

AT [\\ computername] [[id] [/ HAPUS] | / HAPUS [/ YA]]
AT [\\ computername] waktu [/ INTERAKTIF]
    [/ SETIAP: tanggal [, ...] | / NEXT: date [, ...]] "command"

\\ computername Menentukan komputer jarak jauh. Perintah dijadwalkan pada
                   komputer lokal jika parameter ini dihilangkan.
id Adalah nomor identifikasi yang ditetapkan untuk jadwal
                   perintah.
/ delete Membatalkan perintah yang dijadwalkan. Jika id dihilangkan, semua
                   perintah yang dijadwalkan pada komputer dibatalkan.
/ Ya Digunakan dengan membatalkan semua perintah pekerjaan saat tidak ada lagi
                   konfirmasi diinginkan.
time Menentukan waktu kapan perintah dijalankan.
/ Interaktif Memungkinkan pekerjaan berinteraksi dengan desktop pengguna
                   siapa yang masuk pada saat pekerjaan berjalan.
/ every: date [, ...] Menjalankan perintah pada setiap hari tertentu dalam seminggu atau
                   bulan. Jika tanggal dihilangkan, hari ini di bulan tersebut
                   diasumsikan.
/ next: date [, ...] Menjalankan perintah yang ditentukan pada kemunculan berikutnya dari
                   hari (misalnya, Kamis depan). Jika tanggal dihilangkan, maka
                   hari saat ini di bulan diasumsikan.
"command" Apakah perintah Windows NT, atau program batch yang akan dijalankan.

Contoh:

at 9:00 /interactive notepad.exe

Ini akan menyebabkan Notepad terbuka secara interaktif untuk pengguna pada jam 9:00 pagi.

John T
sumber
3
"at" sudah usang saat kita bicara. "schtasks" adalah cara untuk pergi sekarang. Mungkin Anda bisa mengubah jawaban yang benar.
Marius
15

Gunakan perintah schtasks . Ini memiliki lebih banyak opsi daripada atperintah dan beberapa yang bagus seperti /mo LASTDAYuntuk hari terakhir bulan ini:

schtasks menjadwalkan perintah dan program untuk berjalan secara berkala atau pada waktu tertentu. Menambah dan menghapus tugas dari jadwal, memulai dan menghentikan tugas sesuai permintaan, dan menampilkan serta mengubah tugas yang dijadwalkan.

Sintaksis:

schtasks / create / tn TaskName / tr TaskRun / sc schedule [/ mo modifier]
         [/ d hari] [/ m bulan [, bulan ...] [/ i IdleTime] [/ st StartTime] 
         [/ sd StartDate] [/ ed EndDate] [/ s komputer [/ u 
         [domain \] kata sandi pengguna /]] 
         [/ ru {[Domain \] Pengguna | "Sistem"} [/ Kata Sandi rp]] /?
percikan
sumber
1

Tulis skrip Windows shell untuk melakukannya menggunakan program sleep untuk penundaan:

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

Jalankan di jendela shell-nya sendiri. Konfigurasikan cmd.exe untuk menjalankan power up dengan skrip ini. sleeptidur selama beberapa detik:

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