pengembangan-web-mp.com

Cara yang lebih baik untuk menunggu beberapa detik dalam file bat?

Kemungkinan Duplikat:
Bagaimana cara tidur dalam file batch?

Berikut adalah cara haxxorish untuk berhenti sejenak dalam file batch:

PING 400.500.600.700 > NUL

Saya sudah googled tapi saya tidak yakin ada yang lebih baik .. ada ide? :)

12
Srekel

Anda dapat menggunakan opsi "pilihan default" dan "batas waktu" dari perintah pilihan bawaan untuk membuat penundaan.

@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

Cara yang benar untuk melakukan ini adalah dengan menggunakan perintah timeout , diperkenalkan pada Windows 2000.

Untuk menunggu 30 detik:

timeout /t 30

Batas waktu akan terganggu jika pengguna menekan tombol apa saja; namun, perintah itu juga menerima sakelar opsional /nobreak, yang secara efektif mengabaikan apa pun yang dapat ditekan pengguna, kecuali CTRL-C eksplisit:

timeout /t 30 /nobreak

Selain itu, jika Anda tidak ingin perintah untuk mencetak hitungan mundurnya di layar, Anda dapat mengarahkan hasilnya ke 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

Menekan kunci akan menaiki hitungan mundur adalah satu-satunya downside.

4
Aaron Lewis

Inilah yang saya gunakan sebagai pengganti sleep.exe,

@ping -n 1 -w 1000 0.0.0.1 > NUL  

Ubah -n x untuk menunggu (kira-kira) x detik.

3
nray

Rupanya kit sumber daya windows memiliki perintah tidur di dalamnya. Lainnya Situs juga merekomendasikan menggunakan pilihan .....

2
James

Perintah PILIHAN dengan timer di atasnya berfungsi dengan baik ...

PILIHAN/C: x/T: x, 10> NUL

Ada juga "program" di luar sana yang bisa Anda jalankan seperti TUNGGU dan TIDUR, dll.

Semoga ini membantu.

1
KPWINC

Ping satu (di atas) adalah yang bagus - tetapi hanya berfungsi jika terhubung ke jaringan.

Sedikit skrip yang akan ditunda adalah di bawah ini:


@echo mati

set/a secondend =% TIME: ~ 6,2% + 10

jika% detikend% GTR 59 set/a detikend = detikend-60

:tunggu disini

jika% TIME: ~ 6,2% NEQ% detikend% goto waithere


Ini akan berhenti antara 9-10 detik (detik pertama tidak akurat karena menggunakan perintah TIME- dan bisa setengah detik sebelum Anda mulai).

Jika berfungsi dengan mengatur 'detikend' ke detik saat ini dari jam pc, kemudian tambahkan 10 untuk itu (penundaan). Jika lebih besar dari 59 lepas landas 60 saat itu melilit menit berikutnya. Lalu ada loop yang memeriksa detik saat ini dengan 'detikend' - setelah mereka cocok dengan skrip berlanjut.

Jika Anda ingin menunda dengan periode yang berbeda 2-59 maka ubah 10 di baris kedua (saya katakan 2-59 karena detik pertama mungkin bukan detik penuh, jadi 2 bisa dikatakan, misalnya 1,2 detik).

Maaf itu sudah lama tapi saya pikir saya akan menjelaskan cara kerja rutin.

1
Mark H