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