mejorar code taskkill exe molestos (batch)

Iniciado por flony, 1 Diciembre 2009, 15:01 PM

0 Miembros y 1 Visitante están viendo este tema.

flony

hola gente amiga  ;D
este code lo que hace es borrar los exe que no deseo que funcionen,  ::)
me ayudan a mejorar este code tiene unos pequeños errores como por ejmplo no puedo borrar los primeros renglones y creo q borro un par de funciones esenciales   :o
bue y si tienen algo mas para mejorar lo ponen...che quiero criticas constructivas  ;D
aca el code

@echo off
cd C:\
tasklist>>analizar.txt

for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^System" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^csrss.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1


for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^services.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^smss.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^alg.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1


for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^winlogon.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1



for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^lsass.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=2 delims=:" %%_ in ('findstr /i /n /r "^0" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1


for /f "tokens=2 delims=:" %%_ in ('findstr /i /n /r "^928" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=2 delims=:" %%_ in ('findstr /i /n /r "^1008" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=2 delims=:" %%_ in ('findstr /i /n /r "^1076" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1


for /f "tokens=2 delims=:" %%_ in ('findstr /i /n /r "^1120" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=2 delims=:" %%_ in ('findstr /i /n /r "^1248" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^explorer.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^egui.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^ctfmon.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1

for /f "tokens=1 delims=:" %%_ in ('findstr /i /n /r "^ekrn.exe" "analizar.txt"') do (
set "n_line=%%_"
)
(
ECHO %n_line%d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1
ping -n 1 127.0.0.1

:elimina
setlocal enabledelayedexpansion

set /a nchar=0

for /f "tokens=1 delims=*" %%x in (analizar.txt) do (
set "string=%%x"
call :contar
TASKKILL /T /F /IM "%string%"
ping -n 1 127.0.0.1
call :ultimo
)

:contar
If /i "!string:~%nchar%,1!" == "" goto:eof
set /a nchar+=1
goto Contar

:ultimo
(
ECHO 1d
ECHO E
) | EDLIN /B analizar.txt > nul 2>&1
if nchar==0 goto :end else goto :elimina

:end
del /Q analizar.bak
del /Q analizar.txt

si un problema no tiene solucion entonces no es un problema...es algo inevitable

Novlucker

Bueno, si que es mejorable, sobre todo por el uso de archivos temporales en disco, lo cual se podría evitar.

De cualquier manera no esperes mucho, ya que por lo que veo no intentas hacer nada "útil" .. "exe molestos"? System, csrss.exe, services.exe, smss.exe, alg.exe, winlogon.exe, lsass.exe, explorer.exe, egui.exe, ctfmon.exe y ekrn.exe? :¬¬

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

flony

#2
a ver archivos temporales???? :huh: ni a gancho los uso....dos si lo lees lo que hace las primeras lineas es borrar de un txt esos procesos....como que nada util  :o seguro algun desquiciado si se le canta lo usa mal....pero si ves el code hace lo contrario y si quisiera molestarle la vida a alguien borro un par de dll y listo con este code cuando mucho sale un cartel que te da un eterno minuto para usar shutdow -a ....y surgio xq no queria usar el optimizador del tune up...xq no tengo ningun nivel de decicion en lo que quiero borrar o no...........que parte de criticas constructivas no entendiste....por favor si van a opinar LEEAN  el fack :-X code si no ni opinen...otra cosa si lo pruban tengan a mano un shutdow -a
si un problema no tiene solucion entonces no es un problema...es algo inevitable

Novlucker

Lo había mirado al revés .. fui directamente al TASKKILL XD

El analizar.txt no es un archivo temporal? :o
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

flony

si un problema no tiene solucion entonces no es un problema...es algo inevitable

leogtz

#5
No gastes demasiados recursos. Como supongo que eres administrador de tu sistema y es para uso propio, podrías usar WMIC.

wmic process get caption

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Novlucker

WMIC! fue lo primero que pensé! ;D
Escribes un comando con WHERE y OR haciendo referencia a los ejecutables y listo :P
Por poner un ejemplo en vbs (ahora no tengo permisos de utilizar WMIC desde línea de comandos :¬¬)

Código (vb) [Seleccionar]
set taskmgr = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery ("select * from Win32_Process where name='calc.exe' or name='notepad.exe'")
for each process in taskmgr
process.terminate
next


Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Novlucker

Ahora si ... algo así para terminar los procesos que prefieras :P

Código (dos) [Seleccionar]
C:\>wmic process where "name='notepad.exe' or name='calc.exe'or name='mspaint.exe'" delete
Eliminando la instancia \\NOVLUCKE-A054CB\ROOT\CIMV2:Win32_Process.Handle="1508"
Instancia eliminada correctamente.
Eliminando la instancia \\NOVLUCKE-A054CB\ROOT\CIMV2:Win32_Process.Handle="2044"
Instancia eliminada correctamente.
Eliminando la instancia \\NOVLUCKE-A054CB\ROOT\CIMV2:Win32_Process.Handle="536"
Instancia eliminada correctamente.
Eliminando la instancia \\NOVLUCKE-A054CB\ROOT\CIMV2:Win32_Process.Handle="1452"
Instancia eliminada correctamente.

C:\>


O se podría hacer lo contrario por medio de la clausula NOT, matar todo MENOS :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

leogtz

Offtopic : Novlucker, ¿no has probado powershell?  :)
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Novlucker

#9
[offtopic]Si lo he probado! ;D, lo tengo instalado en XP y en Win 7 viene por defecto, esta excelente!, me falta hacer más pruebas pero de cualquier manera sería interesante que alguien preguntara sobre eso, el problema es que nadie lo conoce :-\[/offtopic]
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein