Después de todos estos años, uno pensaría que había creado algunos archivos por lotes de Windows de algún tipo. Pero estarías equivocado. Estoy actualizando un archivo por lotes y encontré la siguiente declaración:

TASKKILL /F /FI "WINDOWTITLE eq SIM RH*" /IM perl.exe

¿Por qué tanto / FI como / IM? ¿Están las dos cláusulas juntas? Si dejo fuera el / IM, los procesos correctos se eliminan.

La única forma en que esto tiene sentido es si terminan y eliminan solo las tareas con ese título de ventana Y son tareas de perl.exe.

2
D. Scruggs 6 dic. 2016 a las 10:59
3
/FI es un filtro de acuerdo con taskkill /? por lo que se suponía que esto mataba solo la ventana de perl.exe con el título SIM RH Supongo ...
 – 
geisterfurz007
6 dic. 2016 a las 11:38

2 respuestas

La mejor respuesta

¡Sí, se añaden!

/IM eliminaría todas las tareas con diferentes ID de proceso
/FI aplica un filtro a eso. Puedes probar eso con algo como esto:

@echo off
for /L %%i in (1,1,5) do start "%%i" cmd.exe
timeout /t 3
taskkill /F /FI "WindowName ne 3" /IM cmd.exe

Esto debería dejarle 1 símbolo del sistema con el título 3. Todos los demás se cerrarán.

Cambiar ne a eq solo cerraría el símbolo del sistema con el título 3 dejándote con 1, 2, 4, 5 y yourBatch.bat

2
geisterfurz007 6 dic. 2016 a las 12:26

Si. La opción /FI "WINDOWTITLE eq SIM RH*" dada filtrará los procesos por título de ventana que comience con SIM RH. La referencia para taskkill especifica que si se proporciona dicho filtro, se acepta el carácter comodín * para la opción /IM.

Lo que no se dice es el hecho de que agregar un filtro y omitir /IM parece implicar /IM *.

Puede verificar este comportamiento con el siguiente comando, que abrirá un shell normal y un PowerShell en dos ventanas separadas, y luego eliminará ambas ventanas simplemente especificando un filtro de título de ventana.

start "testp1" cmd && start "testp2" powershell && taskkill /F /FI "WINDOWTITLE eq testp*" 
0
zb226 6 dic. 2016 a las 12:37