2012-07-26 8 views
9

Esto es una continuación de mi pregunta anterior (link).El archivo por lotes que se ejecuta en el Programador de tareas continúa ejecutándose después de que el archivo por lotes finalice

Para probar las cosas que hice este archivo por lotes sencillo para asegurar el programador de tareas se ejecuta correctamente el archivo por lotes:

cd "C:\Users\user\Desktop" 
echo. 2>test.txt 

Así que después de que se creó el documento test.txt en el escritorio, el archivo por lotes debe terminar, pero continúa ejecutándose:

Running Tasks List

¿hay alguna manera, ya sea al final del archivo por lotes o un ajuste en las propiedades de la tarea, para asegurar que el proceso se cierra cmd?

Gracias!

Respuesta

0

La solución que encontré fue la de añadir esta línea al final del archivo por lotes:

TASKKILL /F /IM cmd.exe 

Ahora después se ejecuta la tarea de archivos por lotes y completa, ya no está en la lista Todas las tareas en ejecución y el estado vuelve a 'Listo' en lugar de permanecer en 'Correr'.

2

Al ejecutar TASKKILL /F /IM cmd.exe, se matarán todos los procesos de cmd.exe, ya sea que haya generado o no este archivo por lotes. Probablemente no sea un comportamiento deseable. :-)

A juzgar por su última pregunta, supongo que todavía está ejecutando su tarea con cmd.exe /k, que mantendrá la ventana abierta indefinidamente. Para una tarea desatendida, cmd.exe /c es una mejor opción. Cuando el archivo por lotes finaliza, el proceso debe finalizar.

+0

Gracias por su entrada, voy a incluir esto en futuras archivos por lotes (si es necesario). Terminé escribiendo un programa de copia de seguridad para manejar todo, en lugar de un contenedor para los archivos por lotes de respaldo existentes. – Anders

6

puede añadir "salida" a la última línea del script

cd "C:\Users\user\Desktop" 
echo. 2>test.txt 
exit 
3

mismo digo en Windows 7. Poner todos los archivos por lotes en un directorio en el camino específico de usuario del usuario que ejecuta la tarea

plazo programm = "cmd.exe" (sin una ruta)

Sus plus, mina donde = "/ c "C: \ Users [nombre de usuario] \ lo \ your_batchfile.bat" >> log.txt " "

" >> LOG.TXT "de modo que pueda ver la salida del lote ...

comienzo en =" C: \ Users [nombre de usuario] \ lo "

también he comprobado el "correr con altos privilges" caja

después de que todo funcionaba bien :)

12

me encontré con el mismo problema. Sin embargo, me sentí engañado cuando leí lo que Trevor778 escribió en esta publicación:

Tuve el mismo problema: la tarea funcionó pero el estado siguió mostrando Running. Una cosa simple para probar es hacer clic en la Biblioteca del Programador de tareas en la columna de la izquierda. Haga clic en Acción/Actualizar.Presto. El estado cambió a Listo. Eso fue todo para mí, la tarea funcionó bien, solo el estado no se actualizó. Espero que esto ayude.

ref: https://social.technet.microsoft.com/Forums/en-US/2f6dc29c-3b8b-45f5-a2a7-53e076acc062/task-scheduler-scheduler-status-is-being-running-always?forum=winservergen

+0

¡Gracias por el consejo !, parece ser que el estado no se actualiza cuando la tarea finaliza, sin presionar actualizar. –

Cuestiones relacionadas