es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mata procesos con el PID utilizando tuberías y taskkill en Windows.

Soy nuevo en la creación de scripts por lotes y estoy intentando buscar y eliminar una lista de procesos, pero no estoy seguro de cómo proceder después de la segunda tubería.

@echo off
wmic process where "Name like 'java%%.exe'" get Processid, Caption, Commandline | find "abc" |

Aquí estoy utilizando WMIC para listar todos los procesos de Java y filtrarlos usando “find” para obtener los procesos de Java con una palabra específica en “Commandline”. Ahora necesito matar estos procesos después de encontrarlos. ¿Se puede lograr esto utilizando “taskkill” o mediante un bucle “for” después de escribir esto en un archivo? No quiero usar “call Terminate” para matar los procesos. ¿Alguien puede ayudarme con esto? Gracias de antemano.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar los procesos que has filtrado usando find, puedes utilizar el comando taskkill en tu script por lotes. El comando taskkill te permite terminar procesos utilizando su ID de proceso o nombre de imagen. Puedes modificar tu script de la siguiente manera:

    @echo off
    for /f "tokens=2" %%a in ('wmic process where "Name like 'java%%.exe' " get Processid^,Caption^,Commandline ^| find "abc" ^| findstr /r /b /c:"[0-9]"') do (
        echo Eliminando el proceso %%a ...
        taskkill /pid %%a /f
    )
    

    Aquí estamos utilizando un bucle for para iterar sobre los procesos que coinciden con el filtro. Estamos utilizando la opción /f para leer la salida del comando wmic en una variable %%a. También estamos utilizando el comando findstr para filtrar cualquier línea que no comience con un número (correspondiente a los ID de proceso).

    Dentro del bucle, estamos utilizando echo para imprimir un mensaje que indique que estamos eliminando el proceso. Luego, estamos utilizando el comando taskkill para terminar el proceso utilizando su ID de proceso (%%a) y la opción /f para forzar la terminación sin solicitar confirmación.

    Ten en cuenta que puedes personalizar el filtro find para que coincida con el proceso específico que deseas terminar. También puedes ajustar el mensaje de echo o eliminarlo por completo si lo prefieres.

    ¡Espero que esto te ayude!

Comments are closed.