Bagaimana cara menjeda eksekusi untuk sementara waktu dalam file batch Windows antara perintah dan yang berikutnya?
windows
batch-file
batch
Massimo
sumber
sumber
Jawaban:
Cara yang benar untuk tidur dalam file batch adalah dengan menggunakan
timeout
perintah, yang diperkenalkan pada Windows 2000.Untuk menunggu di suatu tempat antara 29 dan 30 detik :
Waktu tunggu akan terputus 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 secara eksplisitCTRL-C
:Selain itu, jika Anda tidak ingin perintah untuk mencetak hitungan mundurnya di layar, Anda dapat mengarahkan hasilnya ke
NUL
:sumber
Karena ini berlaku di sini juga, saya akan menyalin jawaban saya dari situs lain .
Jika Anda ingin menggunakan ping, ada cara yang lebih baik. Anda akan ingin melakukan ping ke alamat yang tidak ada, sehingga Anda dapat menentukan batas waktu dengan presisi milidetik. Untungnya, alamat seperti itu didefinisikan dalam standar (RFC 3330), dan memang demikian
192.0.2.x
. Ini tidak dibuat-buat, ini benar-benar alamat dengan tujuan tidak ada (mungkin tidak jelas, tetapi berlaku bahkan di jaringan lokal):Untuk tidur selama 123 milidetik, gunakan
ping 192.0.2.1 -n 1 -w 123 >nul
sumber
Ping
hanyalah alat yang salah untuk pekerjaan itu.Anda juga dapat memasukkan ping ke localhost. Ini akan memakan waktu 4 detik untuk menyelesaikan (secara default). Ini dianggap sebagai kludge oleh beberapa orang, tetapi bekerja dengan cukup baik.
Perintah:
ping 127.0.0.1
sumber
ping
datang dengan OS Anda. Jika Anda cukup khawatir tentang '95 '98 atau ME, maka Anda juga harus sama khawatirnya dengan 6.22 yang tidak memilikiping
keduanyaPenafian : ini bukan solusi "ideal", jadi jangan repot-repot memukuli saya seperti yang dilakukan pada mereka yang merekomendasikan
ping
...Jika memungkinkan, gunakan
timeout
dengan pasti. Tetapi seperti yang disebutkan dalam komentar, itu tidak selalu menjadi pilihan (misalnya dalam mode non-interaktif). Setelah itu, saya setuju bahwaping
"kludge" mungkin merupakan pilihan terbaik berikutnya, karena sangat sederhana. Yang mengatakan, saya menawarkan opsi lain ... embed VB Script .Dasar dari solusi ini memiliki segala macam aplikasi di luar ini. Seringkali VBS dapat melakukan hal-hal yang tidak dapat dilakukan batch, atau paling tidak melakukannya dengan lebih mudah secara drastis. Dengan menggunakan teknik yang diilustrasikan di sini, Anda dapat mencampur keduanya (tidak "mulus", tetapi "fungsional" ...).
Berikut ini adalah satu baris, untuk membuat skrip temp, jalankan, lalu hapus. Script melakukan tidur untuk Anda (selama 3 detik dalam contoh ini).
Ini pada dasarnya hal yang sama, ditulis sedikit berbeda:
Dan akhirnya, seperti
ping
,CScript
itu sendiri memiliki opsi batas waktu! Jadi, jika Anda memasukkan loop tak terbatas dalam skrip, Anda dapat membiarkan penerjemah memberlakukan durasi. Catatan, ini adalah operasi "sibuk", yang memakan CPU, dan karena itu saya tidak merekomendasikannya ketika Anda dapat menggunakanWScript.Sleep
prosedur, tapi saya menyajikannya sebagai opsi konseptual demi kelengkapan:sumber