Buenas, intento conseguir para un ejercicio de clase el cual es mostrar cuales equipos estan encendidos o apagados a traves de un ping, el problema es que lo que es el find no se guarda en el archivo trash.txt ya que el archivo al abrirlo esta en blanco, al menos no usando el for, si lanzo tan solo el comando funciona a la perfeccion. PD: Pense que fuera porque porque no leia las ips, pero en los echos aparece las ips de los equipos.
¿Que estoy haciendo mal? Muchas gracias
@echo on
for /f "tokens=*" %%a in (ip.txt) do (
ping %%a | find "0% perdidos" > trash.txt
set /p VAR=<trash.txt
if %VAR% EQU == "(0% perdidos)," (
echo El equipo %%a esta operativo
) else (
echo El equipo %%a no esta operativo )
)
echo Proceso por lotes finalizado
Saludos,
- Los For tienen la limitación de NO actualizar las variables hasta que dicho For haya terminado, tienes que especificar EnableDelayedExpansion para cambiar este comportamiento y utilizar ! en lugar de % para referenciar variables.
- En archivos Batch tienes que usar siempre doble % a no ser que se traten de variables de entorno %variable%
- El operador en If EQU sirve para comparar valores numéricos, usa == para comparar texto y usa las comillas para aclararlo, asegúrate de especificar exactamente e texto completo a comparar, en tu caso debe llevar cuatro espacios delante
- Para obtener caracteres especiales como vocales tildadas (á) debes buscar el equivalente haciendo un Echo á>atilde.txt, luego en atilde.txt tienes el caracter que debes usar para obtener á
@Echo off
SetLocal EnableDelayedExpansion
For /F %%a In (ip.txt) Do (
Ping %%a | Find "0%% perdidos">trash.txt
Set /P VAR=<trash.txt
If "!VAR!" == " (0%% perdidos)," (
Echo El equipo %%a está operativo
) Else (
Echo El equipo %%a no está operativo
)
)
EndLocal
Pause
----------------
---- Error de GeSHi?
@Echo off
SetLocal EnableDelayedExpansion
For /F %%a In (ip.txt) Do (
Ping %%a | Find "0%% perdidos">trash.txt
Set /P VAR=<trash.txt
If "!VAR!" == " (0%% perdidos)," (
Echo El equipo %%a está operativo
) Else (
Echo El equipo %%a no está operativo
)
)
EndLocal
Pause
Muchas gracias por la solucion y por explicarme el funcionamiento, me ha ayudado a poder entender todo