Запланировать работу из командной строки Windows?

15

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

Task Scheduler GUI не то , что я после. Я должен изменить скрипт, чтобы запланировать событие при определенных условиях ... поэтому должен быть способ вызвать это из командной строки.

fixer1234
источник

Ответы:

13

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

C: \ Documents and Settings \ Администратор> в /?
Команда AT планирует команды и программы для запуска на компьютере в
указанное время и дата. Служба расписания должна быть запущена для использования
команда AT.

AT [\\ имя_компьютера] [[id] [/ DELETE] | / УДАЛИТЬ [/ ДА]]
В [\\ computername] время [/ INTERACTIVE]
    [/ EVERY: дата [, ...] | / NEXT: date [, ...]] "команда"

\\ имя_компьютера Указывает удаленный компьютер. Команды запланированы на
                   локальный компьютер, если этот параметр не указан.
id Идентификационный номер, назначенный запланированному
                   команда.
/ delete Отменяет запланированную команду. Если идентификатор не указан, все
                   запланированные команды на компьютере отменяются.
/ yes Используется с командой отмены всех заданий, когда больше нет
                   Требуется подтверждение.
время Определяет время, когда команда должна быть запущена.
/ interactive Позволяет заданию взаимодействовать с рабочим столом пользователя.
                   кто вошел в систему во время выполнения задания.
/ every: date [, ...] Запускает команду в каждый указанный день недели или
                   месяц. Если дата опущена, текущий день месяца
                   предполагается.
/ next: date [, ...] Запускает указанную команду при следующем появлении
                   день (например, в следующий четверг). Если дата не указана,
                   текущий день месяца предполагается.
«команда» - это команда Windows NT или пакетная программа для запуска.

Пример:

at 9:00 /interactive notepad.exe

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

Джон Т
источник
3
"в" устарела, как мы говорим. "schtasks" - путь, которым нужно идти сейчас. Может быть, вы могли бы изменить правильный ответ.
Мариус
15

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

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

Синтаксис:

schtasks / create / tn TaskName / tr TaskRun / sc schedule [/ mo modifier]
         [/ d день] [/ m месяц [, месяц ...] [/ i IdleTime] [/ st StartTime] 
         [/ sd StartDate] [/ ed EndDate] [/ s компьютер [/ u 
         [домен \] пароль пользователя / p]] 
         [/ ru {[Домен \] Пользователь | "Система"} [/ rp Пароль]] /?
splattne
источник
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;
}
Хенрик
источник