Что было. На Windows Server 2019 задача запускает .cmd-файл каждые 20 минут. В планировщике состояние «Выполняется», результата нет; вручную тот же файл отрабатывает за 10 минут. Иногда запуски накладываются и «висят» сутками.
Почему так выглядит. Планировщик знает только, что процесс стартовал и ещё не завершился. Он не видит, что процесс ждёт ввода, показал окно, которое некому закрыть, или упёрся в отсутствие сетевого ресурса. Без перехвата вывода вы тоже ничего не увидите: у задач нет консоли.
Что рекомендовали (принятый ответ).
- Обернуть команду и писать лог. Действие задачи: программа
cmd.exe, аргументы:
А в самом/c C:\Scripts\job.cmd 1>>"C:\Scripts\Logs\job.log" 2>&1job.cmdпервой и последней строками:
После первого запуска по расписанию в логе будет видно, на чём остановилось (обычно «не найден путь», «доступ запрещён» или бесконечное ожидание нажатия клавиши).@echo %date% %time% start ... @echo %date% %time% end rc=%errorlevel% - Запретить наложение: Параметры → «Если задача уже выполняется: Не запускать новый экземпляр». Иначе каждые 20 минут появляется ещё один висящий процесс.
- Ограничить время: «Останавливать задачу, выполняющуюся дольше: 1 час» и «Принудительно останавливать при неудачном завершении».
- Контекст. Задача без входа пользователя не видит подключённых дисков и не может показать окно: любой
pause,msg, диалог «сохранить?» или программа с графическим интерфейсом ждёт вечно. Заменить буквы дисков на UNC-пути, убрать интерактивные шаги, для графических программ использовать режим без окон или другую утилиту.
Как разобрать уже висящую задачу. В диспетчере задач найти процесс по имени и посмотреть его командную строку и дерево дочерних процессов (tasklist /v или Process Explorer): чаще всего висит дочерний процесс, ожидающий ввода. taskkill /pid <PID> /t завершит дерево.
Про «10 минут вручную и сутки по расписанию». Кроме ожидания ввода, причина может быть в приоритете: задачи планировщика по умолчанию запускаются с пониженным приоритетом (7 в XML задачи). Для тяжёлых пакетных заданий экспортировать задачу, поставить <Priority>4</Priority> и импортировать обратно.
Планировщик описан в документации Microsoft.