如何在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外,程序会忠实地重复自己。