MS-DOS Пакетный файл с ключом ввода

Возможно ли в пакетном файле MS-DOS приостановить script и ждать, пока пользователь нажмет клавишу ввода?

Я хочу сделать это внутри цикла for. После каждой итерации я хочу, чтобы script остановился и дождался, когда пользователь ударит 'Enter'

Ответ 1

Там есть команда pause, которая делает именно это, хотя это не специально ключ ввода.

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

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

Ответ 2

pause команда - это то, что вы ищете. Если вы смотрите ТОЛЬКО случай, когда вводится удар, вы можете злоупотреблять командой runas:

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

экран будет заморожен до тех пор, пока не будет нажата клавиша ввода. Что мне больше, чем set/p=, так это то, что если вы нажмете другие кнопки, кроме ввода, они не будут отображаться.

Ответ 3

В зависимости от того, какую ОС вы используете, если вы гибки, то CHOICE можно использовать для ожидания почти любой клавиши EXCEPT enter

Если вы действительно ссылаетесь на то, что 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.