Estoy usando Windows Server 2003 y tengo una tarea programada que no se completa. La tarea está configurada para ejecutar un Script de comando de Windows (.cmd) a las 3 p.m. cada día. El script ejecuta un programa que extrae algunos datos de una base de datos de SQL Server y los carga en un servidor FTP.
El código de error que se muestra en la columna "Último resultado" de la carpeta de tareas programadas es 0xc000013a. Una búsqueda rápida en Google conduce a esta página de soporte de Microsoft que dice: El código de error "C" más común es "0xC000013A: la aplicación finalizó como resultado de un CTRL + C".
Nadie ha iniciado sesión en el momento en que se ejecuta la tarea, por lo que no hay nadie para presionar CTRL + C. No estoy seguro de entender lo que se dice aquí en la documentación de Microsoft.
He comprobado las cosas rudimentarias: la tarea programada está habilitada, programada para ejecutarse cada día y apuntando a un archivo que existe en una ubicación válida. Curiosamente, cuando ejecuto esta tarea manualmente (ya sea ejecutando el script .cmd desde la línea de comando, o haciendo clic derecho en la tarea y haciendo clic en "Ejecutar") la tarea se completa con éxito.
¿Qué significa este código de error y cómo puedo ejecutar esta tarea cuando no estoy allí para forzarla?
fuente
exit 0
). Si aún falla, está fallando por sí mismo. Si no, era solo un código de salida falso malinterpretado por el programador de tareas.Respuestas:
Solución de problemas de scripts programados:
Si aún no lo ha hecho, consulte el archivo de registro de Tareas programadas, en la GUI en Avanzado > Ver registro . Busque en el archivo "
***
" para encontrar las entradas más recientes, y es posible que vea una pequeña información adicional de error.Defina un archivo de registro para capturar la salida y envíe tanto el error estándar como el error estándar allí. Cambie cualquier eco APAGADO a eco ENCENDIDO para asegurarse de que no está suprimiendo ningún mensaje de error.
Por ejemplo, si se llama a su script,
ftp.data.cmd
entonces su tarea programada podría verse así,cmd /c ftp.data.cmd >> ftp.data.log 2>&1
¿Está colgando el guión? Tal vez el programador de tareas está eliminando el script (de ahí el código de error CTRL + C) después de un período de tiempo especificado. Agregue algunos de estos en puntos estratégicos en su scipt,
echo %DATE% %TIME%
¿Está seguro de que la cuenta que ejecuta el script tiene permisos / acceso a todo en el script?
Si no puede disfrutar, ejecute este comando y publique el resultado aquí, tal vez podamos comenzar con la programación,
schtasks /query /v /fo LIST /s YOURSERVER
fuente
No puedo responder la pregunta directamente, ya que no sé específicamente qué significa el mensaje de error (ni, por lo tanto, cómo solucionarlo), pero si intentara solucionarlo, agregaría algunas escrituras a un archivo de registro en puntos estratégicos en el script y luego, después del tiempo programado, vea cuál es el último punto de control para ejecutar.
Mi sospecha sería que hay algo que falla debido a las credenciales con las que se ejecuta el script o algo en el script necesita un usuario conectado. Limitar dónde fallan las cosas en el script podría ayudarlo a encontrar el código "ofensivo".
fuente
Me doy cuenta de que esta es una publicación antigua, pero son muy útiles al buscar soluciones y tal vez lo que encontré también puede ser útil. Estaba usando WinSCP en Windows Server 2003 para cargar en un servidor ftp y recibí el mismo mensaje de error y el archivo SchedLgU.txt señaló que no había suficiente tiempo en la sección "Detener la tarea si proporciona:" aunque le di la tarea tiempo de sobra para subir.
Al mirar el Administrador de tareas, pude ver que WinSCP.exe no se estaba borrando y tenía toneladas de procesos en la lista, así que creé un archivo por lotes (taskkill / f / im winscp.exe) para eliminar cualquier proceso abierto y ejecutar ese archivo por lotes antes del WinSCP y ahora funciona bien.
fuente
Me encontré con esto hoy en un servidor remoto, y la solución fue cambiar la configuración de ejecución de "Ejecutar solo cuando el usuario inició sesión" a "Ejecutar si el usuario inició sesión o no".
Con "Ejecutar solo cuando el usuario ha iniciado sesión", la tarea inicia una ventana de comando que se cerró cuando se agotó el tiempo de espera de mi sesión de escritorio remoto. Con "Ejecutar si el usuario ha iniciado sesión o no", no se muestra ninguna ventana mientras se ejecuta la tarea, por lo que la ejecución no se detiene cuando finaliza mi sesión de escritorio remoto.
fuente
Similar a la respuesta de Cori, recomendaría que verifique quién está configurada para ejecutar la tarea programada, ya que he visto este error ocurrir cuando la cuenta de usuario que ejecuta la tarea no tiene los mismos permisos que el usuario conectado
fuente
Si esto funcionó antes, tal vez una condición como una interrupción de la red o un problema en otro host pueda explicar el fallo.
fuente
Tuve el mismo error y fue porque el archivo por lotes que estaba ejecutando solicitaba que algunos archivos se eliminaran con el comando DEL. Como no hay ningún usuario que responda S / N al proceso por lotes, la tarea programada finaliza. El siguiente es el mensaje que encontré en mi registro de tareas programadas: "la tarea finalizó. Esta acción fue iniciada por un administrador o por el servicio del Programador de tareas (porque, por ejemplo, la computadora ahora no está inactiva)". Mi recomendación es ejecutar la tarea manualmente desde el símbolo del sistema para ver dónde se detiene o solicita cierta interacción del usuario, corríjala y su tarea se ejecutará correctamente.
fuente
Si está intentando ejecutar el programa bajo el control del Programador de tareas, System.Environment.CurrentDirectory devolverá C: \ Windows \ System32, NO donde se encuentra su ejecutable. Este error puede ser un error de archivo no encontrado; Estaba tratando de iniciar sesión en un subdirectorio y no existía en el árbol System32.
fuente
En mis guiones esto está claro. Sucede porque tengo una "pausa" al final del archivo por lotes y la tarea programada está limitada a 20 minutos. Cuando el usuario está presente, hola puede ver el flujo del trabajo. Cuando no se finaliza el archivo por lotes por tarea programada, después de 20 min. Esto está causando 0xc000013a y está bien.
fuente
Tuve el mismo problema y lo solucioné cambiando el activador de "Al iniciar el sistema" a "Al iniciar sesión".
fuente
tuvo el mismo problema ... solucionado jugando con un usuario que está registrado para ejecutar la tarea programada. al final, cambiar el dominio fue la respuesta.
fuente