Batch que haga un ping

Iniciado por StreaK, 8 Abril 2010, 18:53 PM

0 Miembros y 1 Visitante están viendo este tema.

StreaK

Buenas,

Tengo una duda, me gustaría crear un programita que al ejecutarlo hiciera un ping a una máquina para comprobar si está en red y si es así ejecutar una serie de instrucciones.

Alguien que domine?

Gracias!! StreaK

leogtz

Código (dos) [Seleccionar]
ping google.com > nul 2>&1 && (echo Online) || (echo Offline)
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

LauBuru

El %errorlevel% varia si esta ON u OFF el dominio? pense que solo era si se ejecutaba correctamente u habia algun error...


Un saludo ^^
69696969 start notepad.exe ::

leogtz

El errorlevel depende de la aplicación que se trate, hay comandos que utilizan hasta 4 tipos de errores diferentes, en este caso el ping solo devuelve 0 o 1, por eso es fácil tratarlo con ejecución condicional.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

LauBuru

Sep, ya sabia hablaba en el caso particular del ping, que haunque el dominio es OFF el comando se ejecuta correctamente hay esta mi confusion

Código (dos) [Seleccionar]
ping 0.0.0.1 & echo %errorlevel%

Por ejemplo me da 0 pero el dominio no existe
69696969 start notepad.exe ::

StreaK

Buenas! Gracias por la respuesta. Hace tiempo que no toco batch y me cuesta recordar estos detalles.

Decís que al ejecutar ping desvuelve 0 o 1 dependiendo del resultado. Me gustaría meter el resultado en una variable para luego hacer comprobaciones.

Gente gracias por la ayuda  :)

StreaK

Mirando por ahí he conseguido lo siguiente

ping google.es > nul 2>&1 && (set "valor=1") || (set "valor=0")
echo %valor%
if %valor%==1 goto var1
if %valor%==0 goto var2

Saludos! StreaK

---saster---

lo puedes hacer mas sencillo

ping google.es > nul 2>&1 && (goto var1) || (goto var2)

sin necesidad de la variable

xassiz_

Cita de: StreaK en  9 Abril 2010, 12:08 PM
Mirando por ahí he conseguido lo siguiente

ping google.es > nul 2>&1 && (set "valor=1") || (set "valor=0")
echo %valor%
if %valor%==1 goto var1
if %valor%==0 goto var2

Saludos! StreaK
No necesitas setear ningún valor. La ejecución del comando queda automaticamente en la variable especial errorlevel.



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

StreaK

Gracias gracias  ;D si que es más sencillo así