Qué código debo utilizar para saber si una PC existe o no en mi red mediante un .bat?

Soy nuevo en este foro y me interesa mucho el tema de la programación en MS-DOS. Estoy intentando hacer un .bat para saber si una PC existe o no en mi red, o sea lo que deseo que haga ese .bat es que me solicite el nombre de la PC que deseo comprobar si existe o no en mi red y me devuelva un mensaje informándome si existe o no.

1 Respuesta

Respuesta
1

Prueba con esto:

@echo off
:Bucle
set /p PC=PC a buscar:ÿ
ping -n 1 %PC%>nul&&echo el equipo %PC% existe en la red||echo el equipo %PC% no existe en la red o no esta conectado
echo para terminar pulsa Ctrl+C
pause
goto :bucle

La prueba de existencia/conexión se hace con el comando PING, pero hay que tener en cuenta que un equipo se puede configurar para que no responda a ese comando. Por tanto, si estuviéramos hablando de una red muy protegida seguramente no sería válido. Pero te puede servir para hacer pruebas.

Muchas gracias por la respuesta, más o menos la entendí, pero realmente lo que quiero es hacer un .bat para apagar una PC por la red y quería dentro del mismo entre otras validaciones validar que existiera en la red o estuviese conectado, ya le agregué el código que me envió y necesito que me revise el código completo de lo que he hecho porque no me funciona. Saludos y Gracias de antemanos

@echo off
Color E9
:menu
Echo Esccriba la opción a ejecutar
echo.
Echo -----------------------------
Echo 1. Apagar una PC
Echo 2. Salir
Echo -----------------------------
Echo.
set /p var=
if %var%==1 goto :INICIAR
if %var%==2 goto :END
Echo.
Echo USTED ESCRIBIÓ (%var%) Y ESTA OPCIÓN NO ESTA DEFINIDA
echo -------------------------------------------------
Echo.
echo PRESIONE UNA TECLA PARA VOLVER AL MENU
pause>NUL
cls
goto :MENU

:INICIAR
Echo.
Echo ------------------------------------
set /p U=Cual es la PC que desea apagar?:ÿ
echo ------------------------------------
if %U%==2 :Esta opción la pongo por si se arrepiente y quiere salir del programa y me está fallando
goto :END

:Bucle
if not ping -n 1 %U%>nul&&
echo el equipo %U% no existe en la red o no esta conectado
goto :INICIAR
shutdown /m \\%U% /s /f /t 60 /c "La pc se apagara en 1 minuto. Administrador"
Echo La PC %U% se apagara dentro de 1 minuto.
Echo.

:END
Echo ---------------------------------------
Echo SALIENDO DEL PROGRAMA...
Pause
exit

Prueba con esto:

@echo off
Color E9
:Menu
Echo Esccriba la opción a ejecutar
Echo.
Echo -----------------------------
Echo 1. Apagar una PC
Echo 2. Salir
Echo -----------------------------
Echo.
set /p var=
if %var%==1 goto :INICIAR
if %var%==2 goto :END
Echo.
Echo USTED ESCRIBIÓ (%var%) Y ESTA OPCIÓN NO ESTA DEFINIDA
echo -------------------------------------------------
Echo.
echo PRESIONE UNA TECLA PARA VOLVER AL MENU
pause>NUL
cls
goto :MENU
:INICIAR
Echo.
Echo ------------------------------------
set /p U=Cual es la PC que desea apagar?:ÿ
echo ------------------------------------
::Esta opción la pongo por si se arrepiente y quiere salir del programa y me está fallando
if %U%==2 goto :END
:Bucle
ping -n 1 %U%>nul||(echo el equipo %U% no existe en la red o no esta conectado&goto :INICIAR)
shutdown /m \\%U% /s /f /t 60 /c "La pc se apagara en 1 minuto. Administrador"
Echo La PC %U% se apagara dentro de 1 minuto.
Echo.
:END
Echo ---------------------------------------
Echo saliendo del programa...
Pause
exit

He hecho dos correcciones respecto a tu "versión":

1. Esta sintaxis no es correcta:

if %U%==2 :Esta opción la pongo por si se arrepiente y quiere salir del programa y me está fallando
goto :END

Si quieres poner comentarios puedes hacerlo precediéndolos de "::" o de "rem" y la acción del IF tiene que estar en la misma línea (o abriendo paréntesis cuando sean varias acciones)

2. Esta sintaxis no se admite:

if not ping -n 1 %U%>nul&&
Echo el equipo %U% no existe en la red o no esta conectado

Mira la ayuda del comando IF para que entiendas que cosas puedes poner en un "IF NOT", tienen que ser condiciones de verdadero/falso y no es el caso del PING

Por último si quieres poner código en el texto te recomiendo que lo incluyas en la ventanita "snippet" que se abre usando la opción "<>" que aparece en la "barra de herramientas" de la página (tercera por la derecha).

Ya me dirás como va la cosa.

Gracias nuevamente, como le decía soy nuevo en esto de la programación en MS-DOS (Batch) y estoy dando mis primeros pasos y bueno debo de tropezar en el camino del cocnociemineto y aprendizaje pero gracias a personas como usted, nosotros los nuevos que comenzamos nos vamos superando poco a poco, ayer mismo descargué un pequeño tutorial que me lo estoy leyendo. Me funcionó todo ok.  Muy agradecido por su ayuda y aclaraciones

Ha sido un placer. Si tienes alguna duda y crees que puedo ayudarte ya sabes dónde estoy.

Gracias nuevamente. Ahora estoy intentando poner un echo y cuando pongo la letra "a" con tilde o sea (á) me sale un carácter exraño en la ventana del .bat, ¿podría si sabe claro decirme como solucionar este problema?

Los caracteres acentuados del MSDOS, y otros propios del español, no se ven tal cual en los editores de Windows. Te paso una tabla de conversión:

 ‚¡¢£µÖà遚¤¥¨­ -> Caracteres MSDOS
áéíóúÁÉÍÓÚüÜñÑ ¿¡ -> Caracteres Windows
Si quieres que te salga el carácter de abajo tienes que usar el de arriba.

Espero que el editor de la página los respete. Ahora lo veré cuando pulse ENVIAR

Pues no los ha respetado todos. Por ejemplo para la É y la ü se ha comido el carácter. Voy a hacer otro intento en columna:

Á 
É ‚
Í ¡
Ó ¢
Ú £
Á µ
ɐ
Í Ö
Ó à
Ú é
ü
Ü š
Ñ ¤
Ñ ¥
¿¨
¡ ­

Tampoco. Ahora me ha convertido en mayúsculas las primeras letras que eran minúsculas y se ha cargado los códigos de "É", "ü" y "¡". Voy a ver si se me ocurre una forma de contarte como hacerlo.

Ya he intentado poner los dos espacios en el código dentro del echo que corresponden a la (á) y no me sale en la ventana de MSDOS. Le envío imagen

He encontrado una forma. Abres Word, escribes en él algo como

Echo áéíóúÁÉÍÓÚüÜñÑ ¿¡

Y eliges "Guardar como", luego en "Guardar como tipo" seleccionas "Texto sin formato (*.txt)" y eliges un nombre, por ejemplo "caractmsdos.bat". Al darle "Aceptar" te debe salir una ventana de "Conversión de archivo" en la que está marcada la opción "Windows (predeterminada)". Marcas "MS-DOS" y das "Aceptar" para que lo salve. Así podrás ver la conversión que hace que es la que debes usar en los BAT cuando quieras que salga el carácter correspondiente. Si no lo consigues dímelo y seguimos intentando.

Es que aunque parezca un espacio el carácter correspondiente a la "à" de MSDOS no es un espacio. Para este caso la página sí que lo respeta. Prueba con esto:

ping -n 1 %U%>nul||(echo el equipo %U% no existe en la red o no est  conectado&goto :MENU)

No, creo que no lo ha respetado. Copia el carácter que te salga en primer lugar en lo que te dije de Word (archivo CARACTMSDOS.BAT) y pégalo en tu código.

Ya resolví con su explicación utilizando el word, lo que hice fue en el archivo que guardé copiar(CTRL+C) el que correspondía a la (á) y pegarlo (ctrl+v) en el código de mi .bat y ya me sale bien la (á). Gracias nuevamente, una última cosa, si no le es molestia podría facilitarme su nombre completo o como puedo encontrarlo en facebook(si tiene cuenta creada claro) para que el intercambio y ayuda nos sea mejor y más rápido, así utilizamos el servicio de mensajería instantánea que FB nos facilita.

Muy bien. Esa era, precisamente la idea.

Y no. No estoy en Facebook ni en ninguna red social. Solo uso este medio, aunque a veces subo algún archivo a Google Drive o a Mega si no queda más remedio.

Ya, no hay problemas, seguiremos contactándonos por esta vía entonces, espero que me permita seguir molestándolo para aclarar mis dudas en esta mi primera etapa en la programación en MS-DOS. Saludos

De acuerdo. Contesto nuevamente para no tener el hilo pendiente de respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas