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

How to create an infinite loop in Windows batch file?

这基本上是我想要的批处理文件。 我希望每当我按任意键越过"暂停"时都可以重新运行" Do Stuff"。

1
2
3
4
while(true){
    Do Stuff
    Pause
}

看起来只有for循环可用,而批量没有while循环。 那我该如何创建一个无限循环呢?


使用旧的goto如何?

1
2
3
4
5
:loop

echo Ooops

goto loop

另请参阅此以获得更有用的示例。


一个真正的无限循环,从1到10递增0。
您需要无限或更多的增量才能达到10。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

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


cmd窗口中使用的单行命令中的无限循环:

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

enter image description here


读取help GOTO

并尝试

1
2
3
:again
do it
goto again

另一个更好的方法是:

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

这样您也可以解决错误


这是使用循环的示例:

1
2
3
4
5
6
7
8
9
10
11
12
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

这是我需要在Windows上将任何消息加密为md5哈希(需要openssl)时使用的简单批处理,并且该程序会忠实地重复自身,除非提供Ctrl + C或空输入。