File batch MS-DOS berhenti dengan tombol enter

146

Apakah mungkin dalam file batch MS-DOS untuk menjeda skrip dan menunggu pengguna menekan tombol enter?

Saya ingin melakukan ini di dalam for loop. Setelah setiap iterasi, saya ingin skrip berhenti dan menunggu pengguna menekan 'Enter'

dr_rk
sumber

Jawaban:

247

Ada pauseperintah yang melakukan hal itu, meskipun itu tidak secara khusus memasukkan kunci.

Jika Anda benar-benar ingin menunggu hanya tombol enter, Anda dapat menggunakan setperintah untuk meminta input pengguna dengan variabel dummy, seperti:

set /p DUMMY=Hit ENTER to continue...

abjuk
sumber
17
Anda tidak perlu menentukan nama variabel:, set /p=Hit ENTER to continue...atau hanya set /p=jika Anda tidak memerlukan prompt.
dbenham
2
Untuk beberapa alasan, aplikasi saya meledak melewati jeda logika. Sangat aneh.
ouflak
11
Tampaknya agak aneh melihat kata "app" digunakan dalam konteks ini (file batch)
Adrian Grigore
itu tidak bekerja untuk saya. hanya berfungsi dari peluncuran kedua saat 'set' berhasil / disimpan ke dalam env.
ses
13

pausePerintah adalah apa yang Anda cari. Jika Anda HANYA mencari kasus ketika masuk dipukul, Anda dapat menyalahgunakan runasperintah:

runas /user:# "" >nul 2>&1

layar akan dibekukan sampai masuk tekan. Apa yang saya suka lebih dari itu set/p=adalah bahwa jika Anda menekan tombol lain selain masuk mereka tidak akan ditampilkan.

npocmaka
sumber
4

Anda dapat melakukannya dengan pauseperintah, contoh:

dir
pause
echo Now about to end...
pause
Vic_HT
sumber
1
pausememang merupakan satu-satunya jawaban yang valid untuk MS-DOS(semua jawaban lain hanya berfungsi dalam cmd). Jadi, jawaban Anda sebenarnya adalah satu-satunya jawaban yang benar untuk pertanyaan khusus ini (walaupun sudah disarankan lebih dari 7 tahun sebelumnya)
Stephan
3

Tergantung pada OS yang Anda gunakan, jika Anda fleksibel, maka CHOICEdapat digunakan untuk menunggu di hampir semua tombol EXCEPTmasuk

Jika Anda benar-benar mengacu pada apa yang Microsoft tegaskan untuk memanggil "Command Prompt" yang hanya merupakan emulator MS-DOS, maka mungkin TIMEOUTmungkin sesuai dengan tujuan Anda ( timeout /t -1menunggu tombol apa saja, bukan hanya ENTER) dan tentu saja CHOICEtersedia lagi dalam edisi WIN baru-baru ini.

Dan peringatan pada SET /P- sedangkan set /p DUMMY=Hit ENTER to continue...akan bekerja,

set "dummy="
set /p DUMMY=Hit ENTER to continue...
if defined dummy (echo not just ENTER was pressed) else (echo just ENTER was pressed)

akan mendeteksi apakah hanya ENTER atau yang lainnya, diakhiri dengan ENTER.

Magoo
sumber