cronkit.org
Cron expressions, explained and converted — in your browser

Cron tools › Convert

Cron to Task Scheduler

schtasks /create · PowerShell triggers · checked against cron

Paste a cron schedule and get the schtasks /create commands that reproduce it on Windows — and a PowerShell version when the triggers are daily or weekly. Each task's trigger is expanded back into start times and compared with the cron line. When Task Scheduler cannot say the schedule, the page tells you why and what the closest honest setup is.

Try one

How to schedule a cron job in Windows Task Scheduler

  1. Paste the cron schedule. Quartz, AWS and Spring expressions work too, so L and # can map to LASTDAY and FIRST–FOURTH.
  2. Fill in a task name and the program to run; put its arguments in the separate box so the quoting comes out right.
  3. Run the schtasks lines in a Command Prompt (or use the PowerShell block when it is shown).
  4. Check the green line: the triggers, expanded back into start times, match the cron runs.

What maps exactly

Cron shapeExampleschtasks
every N minutes, all day (N divides 60)*/15 * * * */sc minute /mo 15 /st 00:00
every N hours (N divides 24)0 */6 * * */sc hourly /mo 6 /st 00:00
once a day30 2 * * */sc daily /st 02:30
weekdays0 9 * * 1-5/sc weekly /d MON,TUE,WED,THU,FRI /st 09:00
one date a month0 0 15 * */sc monthly /d 15 /st 00:00
last day of the month0 0 12 L * ? (Quartz)/sc monthly /mo LASTDAY /m * /st 12:00
first to fourth weekday0 0 9 ? * 2#1 (Quartz)/sc monthly /mo FIRST /d MON /st 09:00
several times a day0 9,17 * * *one task per start time, named backup-0900, backup-1700

What schtasks cannot say

FAQ

Why does one cron line become several tasks?

Because a schtasks task has one start time, and a monthly task one date. 0 9,17 * * * needs a 09:00 task and a 17:00 task. The PowerShell version, when shown, registers one task with several triggers instead.

How is a program path with spaces quoted?

The whole /tr value is wrapped in double quotes, and a path with spaces gets escaped inner quotes: /tr "\"C:\Program Files\App\app.exe\" --full". Keep arguments in the Arguments box and the page does this for you.

What about day 29, 30 or 31?

Cron simply skips months that do not have that date. What Task Scheduler does with a missing date is not covered by our reference, so the page warns you to test it; the check assumes the month is skipped, like cron.

Why is there no PowerShell version for monthly schedules?

New-ScheduledTaskTrigger offers daily and weekly triggers but no monthly one, so monthly schedules are given as schtasks commands only.