it-swarm-vi.tech

Cách tốt hơn để chờ một vài giây trong một tập tin bat?

Có thể trùng lặp:
[.__.] Làm thế nào để ngủ trong một tệp bó?

Đây là một cách haxxorish để tạm dừng một giây trong một tệp bó:

PING 400.500.600.700 > NUL

Tôi đã googled nhưng tôi không chắc có ý tưởng nào tốt hơn .. có ý tưởng nào không? :)

12
Srekel

Bạn có thể sử dụng các tùy chọn "lựa chọn mặc định" và "hết thời gian" của lệnh lựa chọn tích hợp để tạo độ trễ.

@echo off
echo Hi, I'm doing some stuff
echo OK, now I need to take a breather for 5 seconds...
choice /d y /t 5 > nul
echo Times up! Here I go again...
11
ThatGraemeGuy

Cách chính xác để làm điều này là sử dụng lệnh timeout , được giới thiệu trong Windows 2000.

Chờ 30 giây:

timeout /t 30

Thời gian chờ sẽ bị gián đoạn nếu người dùng nhấn bất kỳ phím nào; tuy nhiên, lệnh cũng chấp nhận công tắc tùy chọn /nobreak, mà bỏ qua hiệu quả bất cứ thứ gì người dùng có thể nhấn, ngoại trừ CTRL-C rõ ràng:

timeout /t 30 /nobreak

Ngoài ra, nếu bạn không muốn lệnh in đếm ngược trên màn hình, bạn có thể chuyển hướng đầu ra của nó thành NUL:

timeout /t 30 /nobreak > NUL
29
Massimo
@echo off
echo It is time for liftoff.
timeout /t 5
echo Commencing crash sequence.
timeout /t 5

Nhấn một phím sẽ vượt quá đếm ngược là nhược điểm duy nhất.

4
Aaron Lewis

Đây là những gì tôi đã sử dụng để thay thế cho ngủ.exe,

@ping -n 1 -w 1000 0.0.0.1 > NUL  

Thay đổi -n x để chờ (khoảng) x giây.

3
nray

Rõ ràng bộ tài nguyên windows có lệnh ngủ trong đó. Khác Trang web cũng khuyên bạn nên sử dụng lựa chọn .....

2
James

Lệnh CHOICE với bộ hẹn giờ trên đó hoạt động tốt ...

LỰA CHỌN/C: x/T: x, 10> NUL

Ngoài ra còn có các "chương trình" ngoài kia bạn có thể chạy như WAIT và SLEEP, v.v.

Hi vọng điêu nay co ich.

1
KPWINC

Ping một (ở trên) là một tốt - nhưng chỉ hoạt động nếu được kết nối với mạng.

Một chút kịch bản sẽ trì hoãn bên dưới:


@echo tắt

đặt/giây thứ hai =% THỜI GIAN: ~ 6,2% + 10

if% secondsend% GTR 59 set/a secondsend = secondsend-60

:đợi ở đây

nếu% TIME: ~ 6,2% NEQ% giây và% goto waithere


Việc này sẽ tạm dừng từ 9-10 giây (giây đầu tiên không chính xác do sử dụng lệnh TIME - và có thể là nửa chừng một giây trước khi bạn bắt đầu).

Nếu hoạt động bằng cách đặt 'secondsend' thành giây hiện tại của đồng hồ pc, sau đó thêm 10 vào nó (độ trễ). Nếu nó lớn hơn 59, giảm 60 lần khi nó được kéo dài đến phút tiếp theo. Sau đó, có một vòng lặp kiểm tra giây hiện tại với 'secondsend'- một khi chúng khớp với kịch bản tiếp tục.

Nếu bạn muốn trì hoãn trong khoảng thời gian khác nhau từ 2-59 thì hãy thay đổi số 10 trong dòng thứ hai (tôi nói là 2-59 vì giây đầu tiên có thể không phải là một giây đầy đủ, vì vậy có thể nói là 2 giây, ví dụ 1,2 giây).

Xin lỗi, nó quá dài nhưng nghĩ rằng tôi sẽ giải thích cách thức hoạt động của thói quen này.

1
Mark H