Helpex - Trao đổi & giúp đỡ Đăng nhập
135

Đây là cơ bản những gì tôi muốn trong một tập tin bó. Tôi muốn có thể chạy lại "Do Stuff" bất cứ khi nào tôi nhấn bất kỳ phím nào để đi qua "Tạm dừng".

while(true){
    Do Stuff
    Pause
}

Hình như chỉ có forcác vòng lặp có sẵn và không có whilevòng lặp theo đợt. Làm thế nào để tôi tạo một vòng lặp vô hạn sau đó?

135 hữu ích 3 bình luận 305k xem chia sẻ
253

Làm thế nào về việc sử dụng tốt (?) Cũ goto?

:loop

echo Ooops

goto loop

Xem thêm điều này cho một ví dụ hữu ích hơn.

253 hữu ích 5 bình luận chia sẻ
56

Một vòng lặp thực sự vô hạn, đếm từ 1 đến 10 với số gia bằng 0.
Bạn cần số gia vô hạn hoặc nhiều hơn để đạt được số 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

Điều này có thể hữu ích nếu bạn cần một vòng lặp thực sự vô hạn, vì nó nhanh hơn nhiều so với goto :loopphiên bản vì vòng lặp for được lưu trữ hoàn toàn một lần khi khởi động.

56 hữu ích 1 bình luận chia sẻ
32

Vòng lặp không giới hạn trong lệnh một dòng để sử dụng trong cmdwindows:

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

Làm cách nào để tạo một vòng lặp vô hạn trong tệp bó Windows?

32 hữu ích 2 bình luận chia sẻ
13

đọc help GOTO

và cố gắng

:again
do it
goto again
13 hữu ích 0 bình luận chia sẻ
3

Một cách khác tốt hơn để làm điều đó:

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

Bằng cách này bạn cũng có thể xử lý lỗi

3 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ loops batch-file infinite-loop , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading