en

Se aplica a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2 y Windows Server 2012.

Programa comandos y programas para que se ejecuten en un equipo en una fecha y hora especificada. Solo puede usar at cuando el servicio de programación está en ejecución. Si se usa sin parámetros, at enumera comandos programados. Debe ser miembro del grupo Administradores local para ejecutar este comando.

Sintaxis

at [\computername] [[id] [/delete] | /delete [/yes]]
at [\computername] <time> [/interactive] [/every:date[,...] | /next:date[,...]] <command>

Parámetros

Parámetro Descripción
\<computername\> Especifica un equipo remoto. Si omite este parámetro, at programa los comandos y programas en el equipo local.
<id> Especifica el número de identificación asignado a un comando programado.
/delete Cancela un comando programado. Si omite ID, se cancelan todos los comandos programados del equipo.
/yes Responde sí a todas las consultas del sistema al eliminar eventos programados.
<time> Especifica la hora en que desea ejecutar el comando. La hora se expresa en horas:minutos en notación de 24 horas (es decir, 00:00 (medianoche) a 23:59).
interactiva Permite que command interactúe con el escritorio del usuario que ha iniciado sesión en el momento en que se ejecuta Command.
every: Ejecuta command el día o los días especificados de la semana o del mes (por ejemplo, todos los jueves o el tercer día de cada mes).
<date> Especifica la fecha en que desea ejecutar el comando. Puede especificar uno o varios días de la semana (es decir, escriba M,T,W,Th,F,S,Su) o uno o varios días del mes (es decir, escriba de 1 a 31). En el caso de varias entradas de fecha, sepárelas con comas. Si omite date, at usa el día actual del mes.
next: Ejecuta command el siguiente día que procede (por ejemplo, el próximo jueves).
<command> Especifica el comando de Windows, programa (es decir, archivo .exe o .com) o programa por lotes (es decir, archivo .bat o .cmd) que desea ejecutar. Cuando el comando requiera una ruta de acceso como argumento, use la ruta de acceso absoluta (es decir, toda la ruta de acceso que comienza con la letra de unidad). Si el comando está en un equipo remoto, especifique la notación UNC (Convención de nomenclatura universal) para el servidor y el nombre del recurso compartido, en lugar de una letra de unidad remota.
/? Muestra la ayuda en el símbolo del sistema.

Comentarios

  • Este comando no carga automáticamente cmd.exe antes de ejecutar comandos. Si no está ejecutando un archivo ejecutable (.exe), debe cargar explícitamente cmd.exe al principio del comando de la siguiente manera:

    cmd /c dir > c:\test.out
    
  • Si usa este comando sin opciones de línea de comandos, las tareas programadas aparecen en una tabla con formato similar al siguiente:

    Status  ID   Day        time        Command Line
    OK      1    Each F     4:30 PM     net send group leads status due
    OK      2    Each M     12:00 AM    chkstor > check.file
    OK      3    Each F     11:59 PM    backup2.bat
    
  • Si se incluye un número de identificación (ID) con este comando, solo aparece información de una sola entrada en un formato similar al siguiente:

    Task ID: 1
    Status: OK
    Schedule: Each  F
    Time of Day: 4:30 PM
    Command: net send group leads status due
    
  • Después de programar un comando, especialmente un comando que tenga opciones de línea de comandos, compruebe que la sintaxis del comando es correcta escribiendo at sin ninguna opción de línea de comandos. Si la información de la columna Línea de comandos es incorrecta, elimine el comando y vuelva a escribirlo. Si aun así es incorrecto, vuelva a escribir el comando con menos opciones de línea de comandos.

  • Los comandos programados con at se ejecutan como procesos de fondo. La salida no se muestra en la pantalla del equipo. Para redirigir la salida a un archivo, use el símbolo de redireccionamiento >. Si redirige la salida a un archivo, debe usar el símbolo de escape ^ antes del símbolo de redireccionamiento, tanto si usa at en la línea de comandos como en un archivo por lotes. Por ejemplo, para redirigir la salida a output.txt, escriba lo siguiente:

    at 14:45 c:\test.bat ^>c:\output.txt
    

    El directorio actual del comando en ejecución es la carpeta systemroot.

  • Si cambia la hora del sistema después de programar la ejecución de un comando, sincronice el programador at con la hora del sistema revisada escribiendo at sin opciones de línea de comandos.

  • Los comandos programados se almacenan en el Registro. Como resultado, no perderá las tareas programadas si reinicia el servicio de programación.

  • No use una unidad redirigida para los trabajos programados que acceden a la red. Es posible que el servicio de programación no pueda acceder a la unidad redirigida o que la unidad redirigida no aparezca si un usuario distinto ha iniciado sesión en el momento en que se ejecuta la tarea programada. En su lugar, use rutas UNC para trabajos programados. Por ejemplo:

    at 1:00pm my_backup \\server\share
    

    No use la siguiente sintaxis, donde x: es una conexión realizada por el usuario:

    at 1:00pm my_backup x:
    

    Si programa un comando at que usa una letra de unidad para conectarse a un directorio compartido, incluya un comando at para desconectar la unidad cuando haya terminado de usar la unidad. Si la unidad no está desconectada, la letra de unidad asignada no estará disponible en el símbolo del sistema.

  • De forma predeterminada, las tareas programadas que utilizan este comando se detendrán después de 72 horas. Puede modificar el Registro para cambiar este valor predeterminado.

    Para modificar el Registro

    Precaución

    La edición incorrecta del Registro puede dañar gravemente el sistema. Antes de realizar cambios en el Registro, debe hacer una copia de seguridad de los datos de valor guardados en el equipo.

    1. Inicie el Editor del Registro (regedit.exe).

    2. Busque y haga clic en la siguiente clave del Registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule

    3. En el menú Editar, haga clic en Agregar valor y, a continuación, agregue los siguientes valores del Registro:

      • Value Name. atTaskMaxHours

      • Tipo de datos. reg_DWOrd

      • Radix. Decimal

      • Value Data: 0. Un valor de 0 en el campo Value Data indica que no hay ningún límite y que no se detiene. Los valores comprendidos entre 1 y 99 indican el número de horas.

  • Puede usar la carpeta Tareas programadas para ver o modificar la configuración de una tarea que se creó mediante este comando. Al programar una tarea con este comando, la tarea aparece en la carpeta Tareas programadas, con un nombre similar al siguiente: at3478. Sin embargo, si modifica una tarea a través de la carpeta Tareas programadas, se actualiza a una tarea programada normal. La tarea ya no es visible para el comando at y ya no se aplica la configuración de la cuenta at. Debe escribir explícitamente una cuenta de usuario y una contraseña para la tarea.

Ejemplos

Para mostrar una lista de comandos programados en el servidor de marketing, escriba lo siguiente:

at \\marketing

Para obtener más información sobre un comando con el número de identificación 3 en el servidor Corp, escriba lo siguiente:

at \\corp 3

Para programar un comando net share para que se ejecute en el servidor Corp a las 8:00 de la mañana y redirigir la lista al servidor de mantenimiento, en el directorio compartido de Informes y el archivo Corp.txt, escriba lo siguiente:

at \\corp 08:00 cmd /c net share reports=d:\marketing\reports >> \\maintenance\reports\corp.txt

Para hacer una copia de seguridad de la unidad de disco duro del servidor de marketing en una unidad de cinta a medianoche cada cinco días, cree un programa por lotes denominado Archive.cmd, que contenga los comandos de copia de seguridad y, a continuación, programe el programa por lotes para que se ejecute. Después, escriba lo siguiente:

at \\marketing 00:00 /every:5,10,15,20,25,30 archive

Para cancelar todos los comandos programados en el servidor actual, borre la información de programación de at como se indica a continuación:

at /delete

Para ejecutar un comando que no es un archivo ejecutable (.exe), coloque cmd /c delante del comando para cargar cmd.exe de la siguiente manera:

cmd /c dir > c:\test.out