161 votos

¿Cómo crear un bucle infinito en el archivo por lotes de Windows?

Esto es básicamente lo que quiero en un archivo por lotes. Quiero ser capaz de volver a ejecutar "Hacer Cosas" cada vez que pulse cualquier tecla para pasar de la "Pausa".

while(true){
    Do Stuff
    Pause
}

Parece que sólo hay for bucles disponibles y no while los lazos en el lote. ¿Cómo creo un bucle infinito entonces?

292voto

thkala Puntos 36148

¿Qué tal si usamos el buen(?) viejo goto ?

:loop

echo Ooops

goto loop

Ver también este para un ejemplo más útil.

63voto

jeb Puntos 26035

Un bucle realmente infinito, contando del 1 al 10 con un incremento de 0.
Necesitas infinitos o más incrementos para llegar a los 10.

for /L %%n in (1,0,10) do (
  echo do stuff
  rem ** can't be leaved with a goto (hangs)
  rem ** can't be stopped with exit /b (hangs)
  rem ** can be stopped with exit
  rem ** can be stopped with a syntax error
  call :stop
)

:stop
call :__stop 2>nul

:__stop
() creates a syntax error, quits the batch

Esto podría ser útil si necesitas un bucle realmente infinito, ya que es más rápido que un goto :loop como un bucle de proa se almacena completamente en la memoria intermedia una vez que se inicia.

19voto

PA. Puntos 10538

lea help GOTO

e intentar

:again
do it
goto again

1voto

user1147015 Puntos 141

Aquí hay un ejemplo de uso del bucle:

echo off
cls

:begin

set /P M=Input text to encode md5, press ENTER to exit: 
if %M%==%M1% goto end

echo.|set /p ="%M%" | openssl md5

set M1=%M%
Goto begin

Este es el simple lote que uso cuando necesito encriptar cualquier mensaje en el hash md5 de Windows (se requiere openssl), y el programa se repetiría fielmente excepto si se le da Ctrl+C o una entrada vacía.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X