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

这基本上就是我想要的批处理文件。我希望能够重新运行“做的东西”每当我按任何键去通过“暂停”。

while(true){
Do Stuff
Pause
}

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

435590 次浏览

如何使用良好的(?)老 goto

:loop


echo Ooops


goto loop

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

help GOTO

试试看

:again
do it
goto again

一个真正的无限循环,从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

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

下面是一个使用循环的例子:

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 (openssl 必需)上将任何消息加密到 md5散列中时,这是我使用的简单批处理,除了给定 Ctrl + C 或空输入外,程序将忠实地重复自己。

另一个更好的方法是:

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

这样您也可以处理错误

一行命令中用于 cmd窗口的无限循环:

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

enter image description here