Programación batch

Estoy haciendo un programa que ejecuta .bat para hacer diferentes comandos
como por ejemplo algo simple como un ipconfig
ahora lo que necesito es crear un bat que escriba se ejecute y que deje escrito la palabra ping para que la persona que lo use pueda escribir la página o la ip que quiera
así mismo con un tracert.

1 respuesta

Respuesta
2
Aunque no sé si no estaré resolviendo un problemilla de clase (cosa que no haría si estuviera seguro de que es así) voy a intentar contestarte.
Hay algo que no entiendo en tu pregunta: cuando dices "un bat que escriba se ejecute", ¿de verdad quieres que escriba "se ejecute"? Voy a suponer que se trata de un error o errata de redacción.
Copia las 7 líneas que siguen en un archivo de texto al que puedes llamar "pideping.bat" o de cualquier otra forma que se te ocurra:
@echo off
:Inicio
set dirip=
set /p dirip="ping "
ping %dirip%
set /p mas=Mas (s/n)?
if %mas% == s goto :inicio
Si quieres que haga "tracert" sustituyes "ping" por "tracert" en la línea que empieza por "ping". Si quieres guardar en un archivo de texto, por ejemplo el archivo "resultado.txt", situado en el Escritorio, el resultado del "ping" en lugar de:
Ping %dirip%
Debes poner:
ping %dirip% > "%USERPROFILE%\Escritorio\resultado.txt
Espero haber cubierto con esto tus dos preguntas, pero si necesitas aclaraciones o más preguntas, no dudes en volver a preguntar.
Saludos,
GGG
En todo caso si no se puede hacer si me podrías pasar un código que haga un ping y un tracert a yahoo y que me genere un txt en el escritorio con la información recaudada
Desde ya muchas gracias nuevamente
Desde ya muchas gracias por tu tiempo he podido realizarlo más simple antes de tu respuesta, je je.
Pero ahora estoy en una encruzijada encontré un batch que me muestra la ip solamente del cliente sin toda la información innecesaria que pueda distraerlo a no verla.
Ahora lo que necesito es hacer lo mismo pero con la dirección física del adaptador inalámbrico.
Este es mi código que muestra solamente la ip:
@echo off
setlocal ENABLEEXTENSIONS & set "i=0.0.0.0" & set "j="
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
  if not defined j for %%b in (%%a) do set "i=%%b" & set "j=1")
endlocal & echo %i% & pause & goto :EOF
exit
¿Ahora cómo puedo hacer algo igual pero que me muestre la dirección física del adaptador inalámbrico o sea la mac address?
Desde ya muchas gracias de nuevo
Me alegro que hayas encontrado una solución más simple. La mía tampoco pretendía ser simple, más bien instructiva.
Para la mac puedes usar el comando "ipconfig /all" en lugar del "route print" pero puede variar con el idioma en el que esté configurado tu ordenador. Por tanto deberías probar antes a ejecutar el comando en tu propio ordenador. Si la mac sale en una línea como (es mi caso):
Dirección física. . . . . . . . . : 00-40-F4-65-E0-F5
Podrías obtener solo la mac de la forma siguiente:
@ECHO off
SET mac=
FOR /f "tokens=1 delims=" %%a IN ('ipconfig /all^|findstr física') DO ( SET mac=%%a)
SET mac=%mac:~44,17%
ECHO mac es: %mac%
Si la salida del ipconfig /all no se ajusta exactamente a lo anterior tendrás que retocar el código para ajustarte a tu caso concreto.
Si el ordenador tiene más de un controlador de red (caso típico de los portátiles con wifi, por ejemplo) te sacaría solo la primera (creo). En todo caso puedes comentarme los problemas que te vayan surgiendo.
Suerte y saludos,
GGG
La verdad que al poner
@ECHO off
SET mac= 
FOR /f "tokens=1 delims=" %%a IN ('ipconfig /all^|findstr física') DO ( SET mac=%%a) 
SET mac=%mac:~44,17% 
ECHO mac es: %mac%
No me la encuentra, ¿qué puede estar fallando?
¿Has probado el comando "ipconfig /all" desde una ventana de comando, para ver como es la respuesta que te da? Como te decía es posible que tengas que adaptar el BAT a esa respuesta. Pon aquí, si te parece, la respuesta que te sale y veremos como adaptarlo.
Saludos,
GGG
Bueno, en realidad necesito algo general, por así llamarlo universal por que debe adecuarse a toda pc posible, no puedo depender de que tenga la misma directiva como fisical address etc.
Gracias nuevamente.
Si pretendes obtener la mac mediante un BAT tendrás que adaptarte a los comandos que te ofrezca la versión con la que trabaje el ordenador en cuestión. Me temo que solo tendrás disponibles los comandos "ipconfig" y "getmac" y tendrás que reconocer las distintas respuestas que te puedas encontrar desde dentro del propio BAT porque me parece que no vas a encontrar la solución universal que deseas.
Este podría ser un ejemplo:
@ECHO off
Setlocal EnableDelayedExpansion
SET mac=
SET vv=
FOR /f "tokens=3" %%a IN ('ver') DO (SET vv=%%a&ECHO version es: !vv!)
if %vv% == 2000 GOTO :W2K
if %vv% NEQ XP GOTO :Desc
FOR /f "tokens=1" %%a IN ('getmac /NH') DO (
SET mac=%%a&ECHO mac es: !mac:~0,17!)
GOTO :EOF
:W2K
FOR /f "tokens=1 delims=" %%a IN ('ipconfig /all^|findstr f.sica') DO (
SET mac=%%a&ECHO mac es: !mac:~44,17!)
GOTO :EOF
:Desc
ECHO Version desconocida a analizar
FOR /f "tokens=1 delims=" %%a IN ('ipconfig /all^|findstr physical') DO (
SET mac=%%a&ECHO mac es: !mac:~44,17!)
GOTO :EOF
Los saltos según la versión podrían ser más e incluso se podrían probar distintas modalidades de los comandos (en el ejemplo una en inglés y otra en español) si la variable mac no tiene datos.
A ver si conseguimos avanzar algo.
Saludos,
GGG
Gracias de todas maneras ya lo había encontrado, dejo el código por si alguien lo necesitase.
GETMAC /FO csv
pause 
exit
GETMAC /FO csvpause exit
Este me funciono en varias pcs y con diferentes sistemas operativos.
Gracias por tu tiempo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas