如何在Windows批处理文件中创建无限循环?

soo*_*ise 147 loops batch-file infinite-loop

这基本上是我想要的批处理文件.每当我按任意键超过"暂停"时,我希望能够重新运行"Do Stuff".

while(true){
    Do Stuff
    Pause
}
Run Code Online (Sandbox Code Playgroud)

看起来只有for循环可用且while批处理中没有循环.那么如何创建一个无限循环呢?

thk*_*ala 269

如何使用好(?)旧goto

:loop

echo Ooops

goto loop
Run Code Online (Sandbox Code Playgroud)

另请参阅示例以获取更有用的示例.

  • 我不同意jave.web - 如果正确使用它,goto没有任何问题.例如,我即将使用它来确保在循环中运行的程序自动重新生成,如果它因任何原因而死亡.然而,如果我的程序由于某种原因立即死亡,那么在循环中放置一个小等待来阻止cpu抖动可能是明智的. (9认同)
  • @theonlygusti **不能作为单行命令工作**,正如您所期望的 `:lbl & echo Ooops & goto lbl` ;**但是@Nicholi 下面的评论确实**:`FOR /L (1,0,2) DO @echo Oops` (2认同)

jeb*_*jeb 60

一个非常无限的循环,从1到10计数,增量为0.
您需要无限或更多的增量才能达到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
Run Code Online (Sandbox Code Playgroud)

如果你需要一个非常无限的循环,这可能很有用,因为它比goto :loop版本快得多,因为for循环在启动时完全缓存一次.

  • 很好,因为它也可以在命令提示符下输入它.for/L%n in(1,0,2)do @echo."hi guys" (17认同)

Nab*_*.Z. 49

用于Windows 的单行命令中的无限循环cmd:

FOR /L %N IN () DO @echo Oops
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 要在批处理文件中使用它:FOR/L %% N IN()DO @echo Oops (4认同)
  • 只需注意正在运行的立即退出的命令,这种情况在 Windows 上比在 Linux 上更常见:-D (2认同)

PA.*_*PA. 15

help GOTO

并尝试

:again
do it
goto again
Run Code Online (Sandbox Code Playgroud)


Jul*_*his 7

另一种更好的方法:

:LOOP
timeout /T 1 /NOBREAK 
::pause or sleep x seconds also valid
call myLabel
if not ErrorLevel 1 goto :LOOP
Run Code Online (Sandbox Code Playgroud)

这样你也可以处理错误