schtasks - Programador de tareas
“Quiero hacer una copia de seguridad cada noche” o “quiero que un script se ejecute al encender el PC” son necesidades habituales en el trabajo real.
El comando schtasks permite manejar el Programador de tareas de Windows desde la línea de comandos y programar archivos por lotes o programas.
Crear una tarea (/CREATE)
Sintaxis básica
SCHTASKS /CREATE /TN "nombre de la tarea" /TR "comando a ejecutar" /SC tipo_de_programación [opciones]
| Parámetro | Descripción |
|---|---|
/TN | Nombre de la tarea |
/TR | Ruta del programa o archivo por lotes que se ejecuta |
/SC | Tipo de programación (DAILY, WEEKLY, ONCE, etc.) |
/ST | Hora de inicio (HH:MM) |
/SD | Fecha de inicio (en el formato de fecha corta del sistema, p. ej. DD/MM/AAAA en es-ES) |
/MO | Intervalo o modificador (el 3 de “cada 3 días”) |
/D | Día de la semana o del mes (WEEKLY y MONTHLY) |
/RU | Cuenta de usuario que ejecuta la tarea |
/RL | Nivel de ejecución (HIGHEST para permisos de administrador) |
/F | Sobrescribe una tarea con el mismo nombre sin advertencia |
El formato de fecha de /SD y opciones similares puede variar según la configuración regional de Windows. Si obtienes un error, comprueba el formato que muestra schtasks /create /?.
Tipos de programación
| Tipo | Descripción |
|---|---|
MINUTE | Se ejecuta cada cierto número de minutos |
HOURLY | Se ejecuta cada cierto número de horas |
DAILY | Se ejecuta cada día o cada cierto número de días |
WEEKLY | Se ejecuta en los días de la semana indicados |
MONTHLY | Se ejecuta en un día concreto del mes |
ONCE | Se ejecuta una sola vez |
ONSTART | Se ejecuta al iniciar el sistema |
ONLOGON | Se ejecuta al iniciar sesión |
ONIDLE | Se ejecuta cuando el equipo está inactivo (requiere /I con los minutos) |
Ejecutar cada día a una hora fija
schtasks /create /tn "DailyBackup" /tr "C:\Scripts\backup.cmd" /sc daily /st 23:00
Ejecutar cada varios días
Usa /MO para indicar el intervalo.
schtasks /create /tn "CleanupTask" /tr "C:\Scripts\cleanup.cmd" /sc daily /mo 3 /st 02:00
Ejecutar cada pocos minutos u horas
MINUTE y HOURLY toman el intervalo de /MO.
schtasks /create /tn "HealthCheck" /tr "C:\Scripts\check.cmd" /sc minute /mo 30
schtasks /create /tn "SyncTask" /tr "C:\Scripts\sync.cmd" /sc hourly /mo 2
Ejecutar en días concretos de la semana
Usa /D para indicar los días.
schtasks /create /tn "WeeklyReport" /tr "C:\Scripts\report.cmd" /sc weekly /d MON,FRI /st 09:00
| Día | Significado |
|---|---|
MON | Lunes |
TUE | Martes |
WED | Miércoles |
THU | Jueves |
FRI | Viernes |
SAT | Sábado |
SUN | Domingo |
Ejecutar un día concreto del mes
Usa /SC MONTHLY con /D para indicar el día.
schtasks /create /tn "MonthlyJob" /tr "C:\Scripts\monthly.cmd" /sc monthly /d 1 /st 06:00
Indicar una ruta con espacios
Si la ruta de /TR contiene espacios, enciérrala con \" para escapar las comillas. Si no, todo lo anterior al primer espacio se toma como nombre del programa y la tarea no se ejecutará.
schtasks /create /tn "MyTask" /tr "\"C:\My Scripts\backup.cmd\"" /sc daily /st 23:00
Ejecutar al iniciar el sistema o la sesión
Al iniciar el sistema
schtasks /create /tn "StartupScript" /tr "C:\Scripts\startup.cmd" /sc onstart /ru SYSTEM
Al iniciar sesión
schtasks /create /tn "LoginScript" /tr "C:\Scripts\login.cmd" /sc onlogon
/RU indica la cuenta de usuario que ejecuta la tarea. Con SYSTEM, la tarea se ejecuta aunque no haya ningún usuario con la sesión iniciada. Si omites /RU, la tarea se registra para el usuario que ejecutó el comando y solo se ejecuta mientras ese usuario tiene la sesión iniciada. Registrar una tarea como SYSTEM requiere permisos de administrador.
Para tareas que realizan operaciones que requieren permisos de administrador, añade /RL HIGHEST al registrarlas.
Ejecutar una sola vez
rem El formato de fecha mostrado es el de es-ES; adaptalo a tu configuracion regional
schtasks /create /tn "OneTimeTask" /tr "C:\Scripts\migrate.cmd" /sc once /st 03:00 /sd 15/03/2027
Ver las tareas registradas (/QUERY)
schtasks /query /tn "DailyBackup" /fo list

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
Ver todas las tareas
schtasks /query /fo table
Salida en CSV
schtasks /query /fo csv > tasks.csv
Para ver detalles como el comando que se ejecuta y el último resultado, añade /V.
schtasks /query /tn "DailyBackup" /v /fo list
Usa /FO para elegir el formato de salida: TABLE, LIST o CSV.
Eliminar una tarea (/DELETE)
schtasks /delete /tn "DailyBackup" /f
Con /F, la tarea se elimina sin pedir confirmación.
Deshabilitar o modificar una tarea (/CHANGE)
Para detener una tarea temporalmente sin eliminarla, deshabilítala con /CHANGE. Usa /ENABLE para volver a activarla.
schtasks /change /tn "DailyBackup" /disable
schtasks /change /tn "DailyBackup" /enable
Ejecutar una tarea manualmente (/RUN)
Para ejecutar de inmediato una tarea registrada, usa /RUN.
schtasks /run /tn "DailyBackup"
Detener una tarea en ejecución (/END)
Para detener una tarea que se está ejecutando, usa /END.
schtasks /end /tn "DailyBackup"
Ejemplo práctico: automatizar una copia de seguridad
Este ejemplo crea un archivo por lotes de copia de seguridad y lo registra en el Programador de tareas.
@echo off
setlocal
rem Donde se crea el script de copia de seguridad
set SCRIPT_PATH=C:\Scripts\daily_backup.cmd
if not exist "D:\Backup\Logs" mkdir "D:\Backup\Logs"
rem Crear el script de copia de seguridad
echo @echo off > "%SCRIPT_PATH%"
echo robocopy "C:\Users\user\Documents" "D:\Backup\Documents" /MIR /R:3 /W:5 /LOG+:"D:\Backup\Logs\backup.log" /NP >> "%SCRIPT_PATH%"
rem Registrar en el Programador de tareas
schtasks /create /tn "AutoBackup" /tr "%SCRIPT_PATH%" /sc daily /st 23:00 /f
echo Configuracion completada.
echo La copia de seguridad se ejecutara automaticamente cada dia a las 23:00.
endlocal
Crear o eliminar tareas con schtasks puede requerir permisos de administrador. Si ves “Acceso denegado”, inicia el símbolo del sistema como administrador.
Resumen
| Acción | Comando |
|---|---|
| Crear una tarea | schtasks /create /tn "nombre" /tr "ruta" /sc tipo /st hora |
| Listar tareas | schtasks /query |
| Eliminar una tarea | schtasks /delete /tn "nombre" /f |
| Ejecutar una tarea | schtasks /run /tn "nombre" |
| Detener una tarea | schtasks /end /tn "nombre" |
| Deshabilitar tarea | schtasks /change /tn "nombre" /disable |