Pero a veces nos interesa que el programa haga una pequeña parada controlada sin necesidad de tener que volver a pulsar una tecla. Esto se puede lograr de dos formas:
Mediante el uso de ping y haciendo un bucle temporal.
USO DE PING
Sabemos que el comando ping se retarda 3 segundos cada vez que lo ejecutamos en un programa. Por tanto con la siguiente formula sabremos el numero de pings que debemos hacer para retardar un determinado numero de segundos.
3 segundos = 1 ping
1 segundo = 1 ping /3 ------------ ping -n 2
60 segundos = 60 pings /3 = 20 pings
Podemos ver en la siguiente plantilla 3 tipos de retardo:
ping -n 2 localhost > nul ---------- retarda 1 segundo
ping localhost > nul --------------- retarda 3 segundos
for /L %%letra (0,1,60) do (ping -n 2 localhost > nul) ------------ retarda 1 minuto
for /L %%letra (0,1,20) do (ping localhost > nul) ------------tambien retarda 1 minuto
Como se puede ver se ha utilizado el bucle for para evitar repetir el ping 60 veces.
Redireccionamos > nul para que no se vea la salida asi el retardo es mas limpio.
En el siguiente programa se ve claramente:
@echo off
echo ESTA ES LA PRIMERA FRASE
for /L %%a in (1,1,10) do (ping -n 2 localhost > nul&&echo %%a)
echo DESPUES DE 10 SEGUNDOS SALE ESTA FRASE
for /L %%a in (11,1,20) do (ping -n 2 localhost > nul&&echo %%a)
echo DESPUES DE 20 SEGUNDOS SALE ESTA FRASE
pause
exit
USO DE BUCLES DE TIEMPO
Anteriormente ya vimos la utilizacion del bucle for en conjuncion con ping para hacer un bucle de tiempo. Pero si no utilizamos ping tambien se puede hacer un bucle de tiempo simplemente el numero final que sea elevado.
La sintaxis seria:
FOR /L %%letra IN (0,1,numero_elevado) DO (echo %%letra > nul)
Dependiendo del numero_elevado que pongamos tardara mas o menos.
Por ejemplo:
@echo off
echo PRIMERA FRASE
for /l %%a in (0,1,70000) do (echo %%a > nul)
echo SEGUNDA FRASE: 70000 tarda 10 segundos aproximadamente
pause
exit
Tambien podriamos obtener el mismo resultado con el bucle de tipo :etiqueta.
Sin embargo el numero que se repite debe ser menor ya que es mas lento este bucle al realizar las operaciones.
@echo off
echo PRIMERA FRASE
:inicio
set /a num=num+1
if %num%==10000 goto salir
goto inicio
:salir
echo SEGUNDA FRASE: 10000 tarda 10 segundos aproximadamente
pause
Todo es cuestion de elegir la formula que mejor se adapte a nuestro programa. Sin embargo yo aconsejo mejor temporizar con el ping cuando se trata de precision en cuanto a la espera.
***