elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Problema con "tokens"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con "tokens"  (Leído 3,369 veces)
nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Problema con "tokens"
« en: 21 Mayo 2007, 22:07 pm »

Weno, este es un BATCH de SirDarkCat de hace un tiempo para extraer el PID de los procesos:

Código:
@echo off
FOR /F "tokens=1,2" %%i IN ('tasklist') DO (
IF "%%i"=="cmd.exe.exe" (
SET pid1=%%j
)
IF "%%i"=="wmplayer.exe" (
SET pid2=%%j
)
IF "%%i"=="MessengerDiscovery Live.exe" (
SET pid3=%%j
)
)
echo %pid1%
echo %pid2%
echo %pid3%

Pues tiene un problema k necesito solucionar...funciona siempre bien, excepto en el caso de k el .exe tenga un espacio en el nombre...

Por ejemplo en el ejemplo k puse arrivano se extraera bien el %pid3% de "MessengerDiscovery Live.exe"

El problema viene en que la variable %%i es la linea de caracteres asta k encuentrta un espacio, la variabl %%f es la siguiente, por eso cuando el proceso tiene un espacio en el medio coje como el PID "Live.exe" en este caso, ya k %%f será "Live.exe"

La salida de tasklist es así:

Código:
Nombre de imagen             PID Nombre de sesión Núm. de  Uso de memor
========================= ====== ================ ======== ============
System Idle Process            0 Console                 0        16 KB
System                         4 Console                 0       220 KB
smss.exe                     904 Console                 0       392 KB
csrss.exe                    972 Console                 0    10.608 KB
winlogon.exe                 996 Console                 0     1.620 KB
services.exe                1040 Console                 0     7.268 KB
lsass.exe                   1052 Console                 0     1.480 KB
svchost.exe                 1216 Console                 0     6.904 KB
svchost.exe                 1272 Console                 0     6.744 KB
svchost.exe                 1396 Console                 0    25.504 KB
svchost.exe                 1612 Console                 0     5.572 KB
svchost.exe                 1716 Console                 0     6.612 KB
spoolsv.exe                 1812 Console                 0     7.740 KB
svchost.exe                  504 Console                 0     4.976 KB
nod32krn.exe                 572 Console                 0    22.048 KB
nvsvc32.exe                  620 Console                 0     3.952 KB
svchost.exe                  656 Console                 0     6.676 KB
wdfmgr.exe                   708 Console                 0     1.780 KB
alg.exe                     1892 Console                 0     5.912 KB
explorer.exe                 792 Console                 0    52.800 KB
nod32kui.exe                1672 Console                 0     2.260 KB
TBPANEL.exe                 1692 Console                 0     5.460 KB
ctfmon.exe                  1584 Console                 0     5.836 KB
MessengerDiscovery Live.e    324 Console                 0     9.028 KB
usnsvc.exe                  3636 Console                 0     2.596 KB
LVCOMSX.EXE                 3220 Console                 0     4.616 KB
firefox.exe                 2464 Console                 0   111.456 KB
HelpCtr.exe                 3020 Console                 0     2.992 KB
HelpSvc.exe                 3984 Console                 0    13.948 KB
HelpHost.exe                2936 Console                 0    10.792 KB
cmd.exe                     3096 Console                 0     4.400 KB
cmd.exe                     1596 Console                 0     1.628 KB
wmplayer.exe                2836 Console                 0     6.128 KB
cmd.exe                     3256 Console                 0     4.396 KB
tasklist.exe                2480 Console                 0     6.620 KB
wmiprvse.exe                1360 Console                 0     7.896 KB


Pues por ejemplo de wmplayer.exe cojerá como PID 2836 por lo k funcionará...pero el de MessengerDiscovery Live.e Solo cojerá MessengerDiscovery como ejecutable en %%i y como PID Live.e que es %%f

Aún por encima de eso me acabo de dar cuenta de otra cosa, si el ejecutable tiene el nombre muy largo no lo cojerá correctamente...supongo k esto se puede aumentar aumentando el bufer de ancho de la consola...tengo k provar...

Weno, el tema k mas me interesa es el del problema k se causa cuando el ejecutable tiene un espacio (o mas) por medio...y weno lo de k si el ejecutable es largo se acorta tambien me imprta...

¿Como areglariais eso?

Saludos ;) ;)


En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
sirdarckcat
Aspirante a supervillano
Colaborador
***
Desconectado Desconectado

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Re: Problema con "tokens"
« Respuesta #1 en: 22 Mayo 2007, 04:21 am »

:P que interesante xD
se me ocurren muchas soluciones.. muy muy largas xD
implementar un split por tamaño es una de ellas.. es decir que tome los primeros 25 caracteres, y despues el que sigue, y asi.. pero creo que lo mejor seria.. trabajar hacia atras..
esto consistiria en 2 pasos..
primero hacer un programa que imprima todo alrevez jaja
y despues uno que con ese output alreves, haga lo mismo que mi primer programa..

aunque talves sea mejor usar debug..

en todo caso, una solucion rapida, seria..
Código:
@echo off
FOR /F "tokens=1,2,3" %%i IN ('tasklist') DO (
IF "%%i"=="cmd.exe.exe" (
SET pid1=%%j
)
IF "%%i"=="wmplayer.exe" (
SET pid2=%%j
)
IF "%%i"=="MessengerDiscovery" (
SET pid3=%%k
)
)
echo %pid1%
echo %pid2%
echo %pid3%


En línea

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Problema con "tokens"
« Respuesta #2 en: 23 Mayo 2007, 21:55 pm »

Weno, eso serviría si conoces que aplicacion tiene espacio...pero es k mira...realmente yo lo k quiero hacer es guardar en varias variables el nombre de los procesos en ejecución...y en otra variable el PID de la variable.

Mi idea es ejecutar un tasklist /NH que tendrá esta salida:

Código:
System Idle Process            0 Console                 0        16 KB
System                         4 Console                 0       220 KB
smss.exe                     904 Console                 0       392 KB
csrss.exe                    972 Console                 0     6.412 KB
winlogon.exe                 996 Console                 0     1.080 KB
services.exe                1040 Console                 0     7.320 KB
lsass.exe                   1052 Console                 0     2.808 KB
svchost.exe                 1212 Console                 0     6.904 KB
svchost.exe                 1264 Console                 0     6.920 KB
svchost.exe                 1388 Console                 0    22.568 KB
svchost.exe                 1572 Console                 0     5.784 KB
svchost.exe                 1652 Console                 0     6.604 KB
spoolsv.exe                 1792 Console                 0     9.172 KB
svchost.exe                  732 Console                 0     5.000 KB
nod32krn.exe                 780 Console                 0    22.200 KB
explorer.exe                 812 Console                 0    12.920 KB
nvsvc32.exe                  804 Console                 0     3.812 KB
svchost.exe                  940 Console                 0     6.864 KB
wdfmgr.exe                   544 Console                 0     1.800 KB
nod32kui.exe                1972 Console                 0     1.264 KB
TBPANEL.exe                  228 Console                 0       896 KB
ctfmon.exe                   352 Console                 0     1.904 KB
wmplayer.exe                 360 Console                 0     5.312 KB
alg.exe                     2440 Console                 0     6.024 KB
usnsvc.exe                  2876 Console                 0     2.704 KB
Virtual PC.exe              2320 Console                 0     5.668 KB
msnmsgr.exe                 1512 Console                 0    22.292 KB
MessengerDiscovery Live.e   4044 Console                 0     4.900 KB
firefox.exe                 2956 Console                 0    67.508 KB
wmiprvse.exe                3100 Console                 0     8.104 KB
cmd.exe                     2128 Console                 0     4.408 KB
tasklist.exe                2132 Console                 0     6.628 KB

Pues yo lo que quiero es almacenar en una variable pro1 el valor de uno de los procesos y en una variable pid1 el PID de este proceso.
Despues serían las variables pro2 y pid2 para el siguiente proceso...
Y así sucesivamente asta reunir todos los procesos con su PID...

El problema es sobre todo el tema de los espacios, tu aki no sabes en k kaso el ejecutable tiene espacio...despues el problema de que se acorten los procesos con nombre muy largos weno, supongo k no tendrá solución...

¿Como sería entonces para lo k yo quiero?
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
sirdarckcat
Aspirante a supervillano
Colaborador
***
Desconectado Desconectado

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Re: Problema con "tokens"
« Respuesta #3 en: 24 Mayo 2007, 02:11 am »

fuera de lo que te dije de hacer un programa que invierta una linea, creo que no se puede.
en debug se puede hacer.. con la interrupcion 21 y las funciones a y 9h

Saludos!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tokens?
PHP
Shell Root 5 5,941 Último mensaje 27 Abril 2011, 22:29 pm
por ~ Yoya ~
problema con menu y tokens
Programación C/C++
thapitufa 2 2,472 Último mensaje 2 Diciembre 2012, 23:41 pm
por thapitufa
Problema con C y Tokens
Programación C/C++
spicecobra 1 2,098 Último mensaje 25 Agosto 2013, 18:11 pm
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines