Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Iridiel en 13 Enero 2011, 17:08 pm



Título: [BATCH] Novato ayuda con programa .bat[Solucionado]
Publicado por: Iridiel en 13 Enero 2011, 17:08 pm
Antes que nada presentarme a todos ustedes. No tengo muchas nociones de programacion y usando el google tratando de encontrar algun sitio donde explicaran como resolver un problema que tengo he dado con su magnifico foro. Espero que puedan echarme una mano. Mi problema es el siguiente.

Tengo necesidad de crear un archivo .bat o similar que sea capaz de coger la mac de un equipo, buscarla en un archivo .txt y devolver por pantalla una cadena de texto que se encuentra en dicho archivo .txt separado por espacio. Es decir:

En el archivo txt habra una lista de macs y nombres tipo "40-26-FF-A3-87-42 pepe" yo necesito que saque la mac del ordenador, la muestre en pantalla y a continuacion me muestre a que nombre va asociada dicha mac.

Si pudieran echarme un cable les estaria muy agradecidos. Ya se que esto es pedir que me den el trabajo hecho, pero si por lo menos pudieran orientarme se lo agradeceria. Mis conocimientos son escasos y necesitaria poder resolver esto.

Un saludo
Iridiel


Título: Re: [BATCH] Novato ayuda con programa .bat
Publicado por: xassiz~ en 13 Enero 2011, 18:34 pm
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. call:getMac
  5. for /f "tokens=*" %%%% in (file.txt) do (
  6. set "line=%%~%%"
  7. if "!line:~0,17!" == "!mac!" (
  8. echo !line:~18!
  9. )
  10. )
  11.  
  12. :getMac ()
  13. for /f "tokens=*" %%x in ('wmic nicconfig get MACAddress') do (
  14. set "mac=%%x"
  15. if "!mac:~2,1!" == ":" (
  16. set "mac=!mac:~0,17!"
  17. goto:eof
  18. )
  19. )
  20. set "mac=[unknown]"
  21. goto:eof
Acabo de hacerlo y testearlo en Windows 7.


Título: Re: [BATCH] Novato ayuda con programa .bat
Publicado por: Iridiel en 13 Enero 2011, 19:07 pm
EDIT: Rectificando jejeje.

 Muchas gracias por tu ayuda. Esto es justo lo que buscaba. Ahora que ya solo me queda asignar ese nombre a una variable y trabajar con ella. Muchisimas gracias, en serio  ;-)


Título: Re: [BATCH] Novato ayuda con programa .bat
Publicado por: leogtz en 13 Enero 2011, 19:21 pm
Podrías poner algunas MAC's de ejemplo, como si fuera el archivo file.txt, para ver la estructura del mismo.


Título: Re: [BATCH] Novato ayuda con programa .bat
Publicado por: xassiz~ en 13 Enero 2011, 19:25 pm
EDIT: Rectificando jejeje.

 Muchas gracias por tu ayuda. Esto es justo lo que buscaba. Ahora que ya obtengo en una variable el nombre correspondiente a la mac ya puedo hacer lo que quiera con el. Muchisimas gracias, en serio  ;-)
De nada, espero que entiendas el código y no solo lo utilices :rolleyes:



Título: Re: [BATCH] Novato ayuda con programa .bat
Publicado por: Iridiel en 13 Enero 2011, 19:31 pm
Podrías poner algunas MAC's de ejemplo, como si fuera el archivo file.txt, para ver la estructura del mismo.

Pues el archivo entiendo que debe ser algo asi:

0F:44:GG:1C:E7:02 PEPE
A0:27:GD:CC:E7:04 MANOLO
BB:38:1D:13:E7:05 ANTONIO
50:24:AB:14:E7:11 JUAN
12:24:VV:1F:E7:05 CARLOS

De nada, espero que entiendas el código y no solo lo utilices :rolleyes:



Claro, aun tengo que añadirle alguna funcionalidad. Y si logro entender como lo has hecho, pues seguramente me ayude con futuras dudas. Ademas, mi idea es poner el nombre correspondiente a la mac en una variable para poder añadir dicho nombre al reg de windows. Asi que no se queda solo en esto.

Muchas gracias otra vez por la ayuda.


Título: Re: [BATCH] Novato ayuda con programa .bat
Publicado por: xassiz~ en 13 Enero 2011, 20:09 pm
Ademas, mi idea es poner el nombre correspondiente a la mac en una variable para poder añadir dicho nombre al reg de windows. Asi que no se queda solo en esto.
Solo tienes que cambiar el echo por un set.


Título: Re: [BATCH] Novato ayuda con programa .bat
Publicado por: Iridiel en 13 Enero 2011, 20:19 pm
Si claro. Como ejemplo tonto, para ver si lo hacia bien puse:

Código:
@echo off
setlocal enabledelayedexpansion
 
call:getMac
for /f "tokens=*" %%%% in (claves.txt) do (
set "line=%%~%%"
if "!line:~0,17!" == "!mac!" (
set "nombre=!line:~18!"
echo !nombre!
pause
exit
)
)


>nul pause
exit
 
:getMac ()
for /f "tokens=*" %%x in ('wmic nicconfig get MACAddress') do (
set "mac=%%x"
if "!mac:~2,1!" == ":" (
set "mac=!mac:~0,17!"
goto:eof
)
)
set "mac=[unknown]"
goto:eof

Y me muestra el valor de la variable "nombre" perfectamente. Ahora mirando por aqui, usando la logica y la ayuda del comando reg seguro que saco el resto :P