How to create an infinite loop in Windows batch file?

前端 未结 6 2172
遥遥无期
遥遥无期 2020-11-28 02:50

This is basically what I want in a batch file. I want to be able to re-run \"Do Stuff\" whenever I press any key to go past the \"Pause\".

while(true){
            


        
相关标签:
6条回答
  • 2020-11-28 02:54

    A really infinite loop, counting from 1 to 10 with increment of 0.
    You need infinite or more increments to reach the 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
    

    This could be useful if you need a really infinite loop, as it is much faster than a goto :loop version because a for-loop is cached completely once at startup.

    0 讨论(0)
  • 2020-11-28 02:55

    Another better way of doing it:

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

    This way you can take care of errors too

    0 讨论(0)
  • 2020-11-28 03:08

    read help GOTO

    and try

    :again
    do it
    goto again
    
    0 讨论(0)
  • 2020-11-28 03:09

    Unlimited loop in one-line command for use in cmd windows:

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

    0 讨论(0)
  • 2020-11-28 03:18

    Here is an example of using the loop:

    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
    

    This is the simple batch i use when i need to encrypt any message into md5 hash on Windows(openssl required), and the program would loyally repeat itself except given Ctrl+C or empty input.

    0 讨论(0)
  • 2020-11-28 03:19

    How about using good(?) old goto?

    :loop
    
    echo Ooops
    
    goto loop
    

    See also this for a more useful example.

    0 讨论(0)
提交回复
热议问题