Возможно ли в пакетном файле MS-DOS приостановить script и ждать, пока пользователь нажмет клавишу ввода?
Я хочу сделать это внутри цикла for. После каждой итерации я хочу, чтобы script остановился и дождался, когда пользователь ударит 'Enter'
Возможно ли в пакетном файле MS-DOS приостановить script и ждать, пока пользователь нажмет клавишу ввода?
Я хочу сделать это внутри цикла for. После каждой итерации я хочу, чтобы script остановился и дождался, когда пользователь ударит 'Enter'
Там есть команда pause
, которая делает именно это, хотя это не специально ключ ввода.
Если вы действительно хотите подождать только клавишу ввода, вы можете использовать команду set
, чтобы запросить ввод пользователя с помощью фиктивной переменной, например:
set /p DUMMY=Hit ENTER to continue...
pause
команда - это то, что вы ищете.
Если вы смотрите ТОЛЬКО случай, когда вводится удар, вы можете злоупотреблять командой runas
:
runas /user:# "" >nul 2>&1
экран будет заморожен до тех пор, пока не будет нажата клавиша ввода. Что мне больше, чем set/p=
, так это то, что если вы нажмете другие кнопки, кроме ввода, они не будут отображаться.
В зависимости от того, какую ОС вы используете, если вы гибки, то 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.