Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: nkjavier en 1 Marzo 2019, 02:02 am



Título: ayuda con comando For - BATCH
Publicado por: nkjavier en 1 Marzo 2019, 02:02 am
Hola a todos
tengo inconvenientes con un Batch que genere, el cual necesito delimitar una solucion, pero no le encuentro la vuelta.

Tengo un archivo llamado pcs.log en el cual se graba todas las pcs, que actualmente estan conectadas a las red y responden (resultados de un ping)

su contenido es este (pcs.log)

Haciendo ping a s049_ws_05.mx.sh.hsh [180.167.172.41] con 32 bytes de datos:
Haciendo ping a s049_ws_06.mx.sh.hsh [180.167.172.19] con 32 bytes de datos:
Haciendo ping a s049_ws_08.mx.sh.hsh [180.167.172.15] con 32 bytes de datos:
Haciendo ping a s049_ws_10.mx.sh.hsh [180.167.172.56] con 32 bytes de datos:
Haciendo ping a s049_ws_38.mx.sh.hsh [180.167.172.45] con 32 bytes de datos:

Ahora, lo que necesito de este archivo es extraer los nombres de s049_ws_05, s049_ws_06, s049_ws_08, etc.  es decir, sin la demas informacion de cada linea

Por lo que se ocurrio usar el comando FOR, y aqui me quede atascado

FOR /F "delims=." %%i in (pcs.log) do @echo linea: %%i


me queda asi de aproximado, pero no tanto  :-\

linea: Haciendo ping a s049_ws_05
linea: Haciendo ping a s049_ws_06
linea: Haciendo ping a s049_ws_08
linea: Haciendo ping a s049_ws_10
linea: Haciendo ping a s049_ws_38

NOTA: intente sumar FOR /F "delims=.  delims= " %%i in (pcs.log) do @echo linea: %%i

pero queda peor
linea: Haciendo
linea: Haciendo
linea: Haciendo
linea: Haciendo
-----------
El resultado que busco es   >:D
linea: s049_ws_05
linea: s049_ws_06
linea: s049_ws_08
linea: s049_ws_10
linea: s049_ws_38

alguna idea?
gracias



Título: Re: ayuda con comando For - BATCH
Publicado por: EdePC en 1 Marzo 2019, 18:56 pm
Saludos,

- Échale un par de ojos a este script:

Código:
C:\Users\InterAm\Desktop>type pcs.log
Haciendo ping a s049_ws_05.mx.sh.hsh [180.167.172.41] con 32 bytes de datos:
Haciendo ping a s049_ws_06.mx.sh.hsh [180.167.172.19] con 32 bytes de datos:
Haciendo ping a s049_ws_08.mx.sh.hsh [180.167.172.15] con 32 bytes de datos:
Haciendo ping a s049_ws_10.mx.sh.hsh [180.167.172.56] con 32 bytes de datos:
Haciendo ping a s049_ws_38.mx.sh.hsh [180.167.172.45] con 32 bytes de datos:
C:\Users\InterAm\Desktop>ECHO OFF
FOR /F "tokens=4 delims=. " %i IN (pcs.log) DO ECHO linea: %i
linea: s049_ws_05
linea: s049_ws_06
linea: s049_ws_08
linea: s049_ws_10
linea: s049_ws_38

- Confío en que sabrás utiliza el %% en lugar de % cuando hacer un Batch Script File.