13

В Linux есть cron job и на работе. Есть ли способ запланировать работу из командной строки в Windows?

Графический интерфейс планировщика заданий - это не то, что мне нужно. Я должен изменить сценарий, чтобы запланировать событие при определенных условиях ... поэтому должен быть способ вызвать это из командной строки.

3 ответа3

14

Используйте команду schtasks . Он имеет больше параметров, чем команда at и некоторые хорошие, такие как /mo LASTDAY для последнего дня месяца:

schtasks планирует команды и программы для запуска периодически или в определенное время. Добавляет и удаляет задачи из расписания, запускает и останавливает задачи по требованию, отображает и изменяет запланированные задачи.

Синтаксис:

schtasks /create /tn TaskName /tr TaskRun /sc schedule [/mo modifier]
         [/d day] [/m month[,month...] [/i IdleTime] [/st StartTime] 
         [/sd StartDate] [/ed EndDate] [/s computer [/u 
         [domain\]user /p password]] 
         [/ru {[Domain\]User | "System"} [/rp Password]] /? 
12

Windows также имеет "на работе". Хотя синтаксис немного отличается.

C:\Documents and Settings\Administrator>at /?
The AT command schedules commands and programs to run on a computer at
a specified time and date. The Schedule service must be running to use
the AT command.

AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
    [ /EVERY:date[,...] | /NEXT:date[,...]] "command"

\\computername     Specifies a remote computer. Commands are scheduled on the
                   local computer if this parameter is omitted.
id                 Is an identification number assigned to a scheduled
                   command.
/delete            Cancels a scheduled command. If id is omitted, all the
                   scheduled commands on the computer are canceled.
/yes               Used with cancel all jobs command when no further
                   confirmation is desired.
time               Specifies the time when command is to run.
/interactive       Allows the job to interact with the desktop of the user
                   who is logged on at the time the job runs.
/every:date[,...]  Runs the command on each specified day(s) of the week or
                   month. If date is omitted, the current day of the month
                   is assumed.
/next:date[,...]   Runs the specified command on the next occurrence of the
                   day (for example, next Thursday).  If date is omitted, the
                   current day of the month is assumed.
"command"          Is the Windows NT command, or batch program to be run.

Пример:

at 9:00 /interactive notepad.exe

Это приведет к интерактивному открытию Блокнота для пользователя в 9:00 утра.

1

Напишите сценарий оболочки Windows, чтобы сделать это с помощью спящей программы для задержки:

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

Запустите его в собственном окне оболочки. Настройте cmd.exe для запуска при включении с помощью этого сценария. sleep спит несколько секунд:

#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;
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .