Пакетний файл MS-DOS пауза з клавішею Enter


146

Чи можливо в пакетному файлі MS-DOS призупинити сценарій і чекати, коли користувач натисне клавішу введення?

Я хочу зробити це всередині циклу for. Після кожної ітерації я хочу, щоб сценарій призупинився і чекав, коли користувач натисне "Enter"

Відповіді:


247

Існує pauseкоманда, яка робить саме це, хоча це не конкретно клавіша введення.

Якщо ви дійсно хочете чекати лише клавіші введення, ви можете скористатися setкомандою, щоб запитати введення користувачем з манекенною змінною, наприклад:

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


17
Вам не потрібно вказувати ім’я змінної: set /p=Hit ENTER to continue...або просто, set /p=якщо вам не потрібен рядок.
dbenham

2
З якоїсь причини мій додаток вибухає прямо за логікою паузи. Дуже дивно.
ouflak

11
Здається, трохи дивно бачити, що слово "додаток" використовується в цьому контексті (пакетний файл)
Адріан Григоре

це не працює для мене. працює лише з другого запуску, коли 'set' відпрацьовано / збережено у env.
SES

13

pauseКоманда - це те, що ви шукаєте. Якщо ви шукаєте ТІЛЬКИ випадок, коли натиснути Enter, ви можете зловживати runasкомандою:

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

екран буде заморожено, поки не буде натиснуто клавішу. Що мені більше подобається set/p=, що якщо натиснути інші кнопки, ніж увійти, вони не відображатимуться.


4

Це можна зробити за допомогою pauseкоманди, наприклад:

dir
pause
echo Now about to end...
pause

1
pauseнасправді є єдиною вірною відповіддю MS-DOS(всі інші відповіді працюють cmdлише). Отже, ваша відповідь насправді є єдиною цілком правильною на це особливе запитання (хоча це було запропоновано більше 7 років тому)
Стефан

3

Залежно від того, яку ОС ви використовуєте, якщо ви гнучкі, то їх CHOICEможна буде чекати майже на будь-якій клавішіEXCEPT введення

Якщо ви дійсно маєте на увазі те, що Microsoft наполягає на тому, щоб викликати "Командний рядок", що є просто емулятором MS-DOS, можливо, це TIMEOUTможе відповідати вашим цілям ( timeout /t -1чекає будь-якої клавіші, а не тільки ENTER) і звичайноCHOICE , знову доступна в останніх випусках WIN.

І попередження про SET /P- тоді як set /p DUMMY=Hit ENTER to continue...буде працювати,

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

виявить, чи було введено лише ENTER або щось інше, що закінчується на ENTER.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.