2011-03-30 155 views
115

這基本上是我想要的批處理文件。我希望能夠在任何按鍵經過「暫停」時重新運行「做東西」。如何在Windows批處理文件中創建無限循環?

while(true){ 
    Do Stuff 
    Pause 
} 

貌似只有for循環使用和批號while循環。那麼我如何創建一個無限循環?

+4

你問關於Windows/DOS批處理文件嗎? – thkala 2011-03-30 14:12:06

+0

是的,對於模糊不清,我會給OP做一個附錄。 – sooprise 2011-03-30 14:12:24

+1

+1 ooops,我發佈時沒有注意到其他答案! – 2011-03-30 14:30:09

回答

216

如何使用良好(?)舊goto

:loop 

echo Ooops 

goto loop 

另請參閱this瞭解更多有用的示例。

+0

不好:D有時更快,但從來沒有好:D好吧,只有一個好地方goto - 在最低編程x) – 2013-08-14 13:37:01

+0

我同意jave.web你應該使用下面的循環建議。即使是腳本編寫,您也幾乎從不在代碼中使用goto。 Goto在80年代的GW Basic日子裏很酷。 – DoodleKana 2014-08-22 22:31:11

+0

並從cmd提示符? – theonlygusti 2015-03-13 16:11:37

13

閱讀help GOTO

,並嘗試

:again 
do it 
goto again 
50

一個真正無限循環,以0
你需要無限的或更多的增量達到10

增量從1數到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循環在啓動時會完整緩存一次。

+15

不錯,因爲它也可以在命令提示符下輸入。for/L%n in(1,0,2)do @echo 。「hi guys」 – Nicholi 2012-07-09 19:36:31

0

以下是使用循環的一個示例:

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或空輸入。

1

這樣做的另一種更好的方式:

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

這種方式可以照顧的錯誤太

6

無限循環中使用單行命令cmd窗口:

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

enter image description here

+0

要在批處理文件中使用該文件,請輸入: FOR/L %% IN()DO @echo Oops – 2018-03-07 08:14:28