Tengo un archivo BAT ejecutándose en segundo plano en Windows que dura unos diez minutos. Ahora quiero detenerlo mientras se está ejecutando, pero no puedo encontrar su nombre en la lista de procesos en el administrador de tareas. Entonces, ¿cómo puedo abordar esto? ¡Gracias!
ACTUALIZACIÓN1
Parece difícil detener un proceso BAT en ejecución en el fondo y decido tratar de eliminar todos los procesos involucrados por el archivo BAT por nombre, lo que puede ser exagerado. Es aceptable para mí ya que la mayoría de los procesos en mi archivo BAT no se usan con frecuencia, como ping, tracert, netstat, etc. Si tiene alguna solución mejor, hágamelo saber. Gracias.
ACTUALIZACIÓN2
Árbol de proceso BAT
ShellExecute(NULL,"open","some.bat",NULL,NULL,SW_HIDE);
VC ++.Respuestas:
Los procesos generalmente se inician de manera similar a un árbol, aconsejaría iniciar Microsoft / Sysinternals Process Explorer , comenzar haciendo clic en la
Show Process Tree
opción (1), luego encontrar su proceso y hacer clic derecho y elegirKill Process Tree
(2) Esto debería eliminar tanto el archivo original como todo lo que ha lanzado.fuente
taskkill /F /T /IM cmd.exe
. El único problema es que cada archivo BAT iniciará uncmd.exe
proceso con PID diferente Necesito averiguar cuál es mi objetivo.Puede modificar el archivo por lotes para que use un archivo de bloqueo para continuar operando, insertando comprobaciones entre comandos para la existencia del archivo. Para detener la ejecución del archivo por lotes, simplemente elimine el archivo de bloqueo.
Aquí hay un archivo por lotes de demostración:
Para eliminar violentamente los procesos que podrían estar ejecutándose en este momento, puede crear un archivo por lotes 'kill' que contendrá comandos de taskkill para todas las tareas posiblemente iniciadas desde el archivo por lotes:
fuente
tracert
por ejemplo.Un BAT generalmente solo inicia una instancia de CMD.exe. Dependiendo de lo que haga su script, también iniciará otros procesos.
fuente
Escribí una aplicación que podría ayudarte, al menos si el BAT se ejecuta en una ventana CMD. Puede ver las ventanas de la aplicación que se están ejecutando y obtener el PID de la aplicación, luego puede eliminarla con mi aplicación, también puede ver todos los procesos que ha generado y eliminarlos también. Es un programa realmente simple, pero efectivo para este tipo de cosas. También puede usarlo para localizar exactamente en qué parte de su HD se está ejecutando el archivo BAT, en caso de que aún no lo supiera.
fuente
¿Cómo se invoca el archivo por lotes?
Si es del Programador de tareas, también puede detenerlo desde allí. Si es de un servicio, puede detener el servicio.
fuente
Encontré este hilo del tablero de mensajes:
http://www.gamedev.net/community/forums/topic.asp?topic_id=261694
Sugiere usar ShellExecuteEx (o CreateProcess) para que pueda obtener un identificador de proceso, que luego se puede usar para matar el proceso.
fuente
Si lo tiene abierto en el símbolo del sistema, puede presionar Ctrl+ C. Espere unos segundos y se terminará.
fuente