Расписание без окна планировщика
Планировщик заданий Windows можно настроить мышью через оснастку taskschd.msc, но для повторяемой настройки или записи в инструкцию удобнее команда. Schtasks создаёт, изменяет, запускает и удаляет те же задачи, что видны в графическом окне, поэтому оба способа взаимозаменяемы.
Типичные примеры: еженедельно копировать папку, очищать временный каталог после входа в систему, запускать скрипт проверки при загрузке компьютера. Команда не заменяет специальные системы резервного копирования, но для небольших регулярных действий её достаточно.
Для задач, работающих только для вашей учётной записи, администраторские права обычно не нужны. Для запуска от имени системной учётной записи или с повышенными правами консоль нужно открыть от имени администратора.
Расписание имеет смысл продумать заранее: во сколько компьютер обычно включён, не пересекается ли задача с другими, как долго она может выполняться. Копирование большого каталога, запущенное в момент, когда вы работаете, замедлит и диск, и сеть.
Разбор команды по частям
Рассмотрим запись: schtasks /Create /TN "Копия документов" /TR "robocopy C:\Docs D:\Docs /E" /SC DAILY /ST 21:00. Каждый ключ отвечает за своё.
| Ключ | Смысл |
|---|---|
| /Create | создать задачу |
| /TN | имя задачи, при пробелах в кавычках |
| /TR | что запускать: программа или команда с аргументами |
| /SC | тип расписания |
| /ST | время начала в формате ЧЧ:ММ, 24-часовой |
| /F | перезаписать существующую задачу без запроса |
Среди значений /SC, описанных в справке: MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE. Для некоторых типов нужны дополнительные ключи, например /MO задаёт интервал, а /D дни недели. Полный перечень выводит schtasks /Create /?, и именно его стоит открыть, прежде чем придумывать комбинации.
Для запуска каждые несколько минут используется тип MINUTE с ключом /MO, задающим интервал. Слишком частые запуски создают нагрузку без пользы, поэтому интервал подбирайте под реальную потребность, а не по принципу «чем чаще, тем лучше».
Для еженедельного запуска добавляют ключ /D с днями недели, например MON,THU, а для месячного ключ /D с числом месяца. Названия дней задаются латиницей. Если запустить schtasks /Create без нужных параметров для выбранного типа расписания, команда выведет сообщение с подсказкой о том, чего не хватает.
Кавычки внутри /TR
Частый источник ошибок: кавычки. Значение /TR обрамляется внешними кавычками, а если внутри нужен путь с пробелами, внутренние кавычки экранируют обратным слешем: /TR "\"C:\Program Files\App\app.exe\" -silent". Без экранирования командная строка разберёт значение иначе, и задача создастся, но будет запускать не то.
Если запись получается слишком громоздкой, вынесите действия в файл сценария и в /TR укажите путь к нему. Такой вариант проще проверять вручную: вы запускаете сценарий отдельно и убеждаетесь, что он работает, прежде чем ставить его в расписание.
- Проверьте команду из /TR в обычной консоли до создания задачи.
- Используйте полные пути к программам и файлам, поскольку рабочая папка и PATH у задачи могут отличаться.
- Для файлов-сценариев указывайте и интерпретатор, если не уверены в привязке расширения.
- Результат записывайте в журнал, чтобы потом понять, что произошло.
Если задача должна запускаться при включении компьютера, подходит ONSTART, а при входе пользователя ONLOGON. Для них время /ST не указывается. Такие задачи удобны для проверок после загрузки, но требуют более внимательной настройки учётной записи.
Проверка, ручной запуск и удаление
После создания посмотрите, что получилось: schtasks /Query /TN "Копия документов" /V /FO LIST выведет подробности, включая время следующего запуска и результат последнего. Без /TN команда /Query перечисляет все задачи, а таких в Windows много, поэтому лучше указывать имя.
Не ждите вечера, чтобы узнать, работает ли задача: schtasks /Run /TN "Копия документов" запускает её сразу. Остановить выполняющуюся задачу позволяет /End. Для отключения без удаления служит /Change с ключом /DISABLE, а включить обратно можно через /ENABLE.
Удаление: schtasks /Delete /TN "Копия документов" /F. Ключ /F подавляет вопрос о подтверждении. Удаляйте только те задачи, которые создали сами; многие задачи принадлежат Windows и установленным программам. Порядок действий лучше сначала отработать на тестовой задаче с безобидной командой, например с запуском Блокнота: создайте её, проверьте через /Query, запустите через /Run и удалите через /Delete.
Если задача больше не нужна, а вы не уверены, не используется ли она чем-то ещё, сначала отключите её и проверьте работу в течение нескольких дней. Удаление можно выполнить позже, когда станет ясно, что последствий нет.
Почему задача создана, но не сработала
Если /Run проходит, а по расписанию ничего не происходит, начните с учётной записи. По умолчанию задача связана с текущим пользователем и обычно выполняется, пока он вошёл в систему. Если пользователь вышел из системы или компьютер выключен, запуск может не состояться. Для работы без входа нужно настраивать запуск от имени другой учётной записи ключом /RU, и тогда потребуются соответствующие права.
Вторая причина — относительные пути. Задача стартует не из той папки, где вы тестировали команду, поэтому файлы, указанные без полного пути, не находятся. Третья — питание: на ноутбуках настройки задачи могут не разрешать запуск от батареи, и это удобнее проверять в графическом окне планировщика.
Результат последнего запуска и код возврата смотрите в выводе /Query /V, а подробную историю в самом планировщике, если журнал для него включён. Для задач с robocopy полезен собственный журнал команды, о нём рассказано на странице про копирование папки.
Хорошей практикой считается завести для своих задач отдельную папку в планировщике, указывая имя в виде \МоиЗадачи\Копия. Тогда ваши задачи не смешиваются с системными в общем списке, и их проще найти, проверить и при необходимости удалить все сразу.
Если вы пишете инструкцию для других людей, укажите в ней и команду проверки, и команду удаления: так задачу можно будет убрать без поисков в графическом окне.