¿Programar un trabajo desde la línea de comandos de Windows?

15

En Linux hay trabajo cron y en el trabajo. ¿Hay alguna manera de programar un trabajo desde la línea de comandos en Windows?

La GUI del Programador de tareas no es lo que busco. Debo modificar un script para programar un evento en una determinada condición ... por lo que debe haber una forma de llamar a esto desde la línea de comandos.

fijador1234
fuente

Respuestas:

13

Windows también tiene un "en el trabajo". Aunque la sintaxis es un poco diferente.

C: \ Documents and Settings \ Administrador> en /?
El comando AT programa comandos y programas para que se ejecuten en una computadora a
una hora y fecha especificadas. El servicio Schedule debe estar ejecutándose para usar
El comando AT.

AT [\\ computername] [[id] [/ DELETE] | / BORRAR [/ SÍ]]
AT [\\ computername] time [/ INTERACTIVE]
    [/ CADA: fecha [, ...] | / NEXT: fecha [, ...]] "comando"

\\ computername Especifica una computadora remota. Los comandos se programan en el
                   computadora local si este parámetro se omite.
id Es un número de identificación asignado a un programado
                   mando.
/ delete Cancela un comando programado. Si se omite id, todos los
                   los comandos programados en la computadora se cancelan.
/ yes Se usa con el comando cancelar todos los trabajos cuando no hay más
                   Se desea confirmación.
hora Especifica la hora en que se debe ejecutar el comando.
/ interactivo Permite que el trabajo interactúe con el escritorio del usuario
                   quién está conectado en el momento en que se ejecuta el trabajo.
/ every: date [, ...] Ejecuta el comando en cada día especificado de la semana o
                   mes. Si se omite la fecha, el día actual del mes
                   se supone.
/ next: date [, ...] Ejecuta el comando especificado en la próxima aparición del
                   día (por ejemplo, el próximo jueves). Si se omite la fecha, el
                   Se asume el día actual del mes.
"comando" Es el comando de Windows NT o el programa por lotes que se ejecutará.

Ejemplo:

at 9:00 /interactive notepad.exe

Esto hará que el Bloc de notas se abra interactivamente para el usuario a las 9:00 de la mañana.

John T
fuente
3
"at" está en desuso mientras hablamos. "schtasks" es el camino a seguir ahora. Tal vez podrías cambiar la respuesta correcta.
Marius
15

Usa el comando schtasks . Tiene más opciones que el atcomando y algunas agradables como /mo LASTDAYpara el último día del mes:

schtasks programa comandos y programas para que se ejecuten periódicamente o en un momento específico. Agrega y elimina tareas de la programación, inicia y detiene las tareas a pedido, y muestra y cambia las tareas programadas.

Sintaxis:

schtasks / create / tn TaskName / tr TaskRun / sc schedule [/ modificador]
         [/ d día] [/ m mes [, mes ...] [/ i IdleTime] [/ st StartTime] 
         [/ sd StartDate] [/ ed EndDate] [/ s computadora [/ u 
         [dominio \] usuario / p contraseña]] 
         [/ ru {[Dominio \] Usuario | "Sistema"} [/ rp Contraseña]] /?
splattne
fuente
1

Escriba un script de shell de Windows para hacerlo utilizando un programa de suspensión por retraso:

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

Ejecútelo en una ventana de shell propia. Configure cmd.exe para que se ejecute al encender con este script. sleepduerme varios segundos:

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