如何在Windowsbatch file中创build一个无限循环?

这基本上是我想要在batch file中。 我想要重新运行“做东西”,每当我按任何键通过“暂停”。

while(true){ Do Stuff Pause } 

看起来像只有循环可用和批次没有while循环。 那么我如何创build一个无限循环呢?

如何使用好(?)旧goto

 :loop echo Ooops goto loop 

另请参阅这个更有用的例子。

一个真正的无限循环,从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循环在启动时被完全caching。

阅读help GOTO

并尝试

 :again do it goto again 

另一个更好的方法是:

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

这样你也可以照顾错误

这是一个使用循环的例子:

 echo off cls :begin set /PM=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上encryption任何消息到md5散列(openssl required)时,除了给定Ctrl + C或空input外,程序会忠实地重复自己。