Comment créer une boucle infinie dans le fichier batch Windows?

C'est essentiellement ce que je veux dans un fichier batch. Je veux être capable de relancer "Do Stuff" chaque fois que j'appuie sur une touche pour dépasser la "Pause".

while(true){
    Do Stuff
    Pause
}

On dirait qu'il n'y a que des boucles for disponibles et aucune boucle while dans le lot. Comment puis-je créer une boucle infinie alors?

129
demandé sur Helen 2011-03-30 18:10:26

6 réponses

Que diriez-vous d'utiliser good(?) vieux goto?

:loop

echo Ooops

goto loop

Voir aussi ce pour un exemple plus utile.

239
répondu thkala 2011-03-30 14:14:22

Une boucle vraiment infinie, comptant de 1 à 10 avec incrément de 0.
Vous avez besoin d'incréments infinis ou plus pour atteindre les 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

Cela pourrait être utile si vous avez besoin d'une boucle vraiment infinie, car elle est beaucoup plus rapide qu'une version goto :loop car une boucle for Est complètement mise en cache une fois au démarrage.

54
répondu jeb 2018-07-20 19:26:18

Illimité de boucle commande d'une ligne pour une utilisation dans cmd windows:

FOR /L %N IN () DO @echo Oops

entrez la description de l'image ici

17
répondu Nabi K.A.Z. 2017-12-30 13:38:05

Lire help GOTO

Et essayez

:again
do it
goto again
13
répondu PA. 2011-03-30 14:29:24

Une Autre meilleure façon de le faire:

:LOOP
timeout /T 1 /NOBREAK 
::pause or sleep x seconds also valid
call myLabel
if not ErrorLevel 1 goto :LOOP

De cette façon, vous pouvez également vous occuper des erreurs

3
répondu Julito Sanchis 2017-04-13 14:26:08

Voici un exemple d'utilisation de la boucle:

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

C'est le lot simple que j'utilise quand j'ai besoin de chiffrer n'importe quel message dans le hachage md5 sur Windows(openssl requis), et le programme se répéterait loyalement sauf Ctrl+C ou entrée vide.

0
répondu user1147015 2012-01-13 05:54:03