loops - looping - ¿Cómo crear un bucle infinito en el archivo por lotes de Windows?
looping batch file (6)
¿Qué tal si utilizamos un buen (?) Viejo goto
?
:loop
echo Ooops
goto loop
Ver también this para un ejemplo más útil.
Esto es básicamente lo que quiero en un archivo por lotes. Quiero poder volver a ejecutar "Do Stuff" cada vez que presiono cualquier tecla para pasar la "Pausa".
while(true){
Do Stuff
Pause
}
Parece que solo hay bucles disponibles y no bucles while en lote. ¿Cómo creo un bucle infinito?
Aquí hay un ejemplo del 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 lote simple que uso cuando necesito encriptar cualquier mensaje en md5 hash en Windows (se requiere openssl), y el programa se repetiría fielmente a excepción de Ctrl + C dado o entrada vacía.
Otra forma mejor de hacerlo:
:LOOP
timeout /T 1 /NOBREAK
::pause or sleep x seconds also valid
call myLabel
if not ErrorLevel 1 goto :LOOP
De esta forma también puedes ocuparte de los errores
Un bucle realmente infinito, que cuenta de 1 a 10 con un incremento de 0.
Necesitas incrementos infinitos o más para alcanzar el 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 necesita un bucle realmente infinito, ya que es mcuh más rápido que una versión goto :loop
, ya que for-loop se almacena en caché completamente una vez al inicio.
leer help GOTO
y prueba
:again
do it
goto again