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

16360
fixer1234

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

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

13

3 ответа на вопрос

14
splattne

Используйте команду 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 Пароль]] /? 
12
John T

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 утра.

"в" устарела, как мы говорим. "schtasks" это путь, чтобы пойти сейчас. Может быть, вы могли бы изменить правильный ответ. Marius 9 лет назад 3
1
Henrik

Write a Windows shell script to do it using a sleep program for delay:

@echo off :loop someprogram args sleep 900 if somecondition goto loop 

Run it in a shell window of its own. Configure cmd.exe to run on power up with this script. sleep sleeps for a number of seconds:

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