172

是否可以在 MS-DOS 批处理文件中暂停脚本并等待用户按 Enter 键?

我希望在 for 循环中执行此操作。每次迭代后,我希望脚本暂停并等待用户点击“Enter”

4

6 回答 6

286

有一个pause命令可以做到这一点,尽管它不是专门的输入键。

如果您真的只想等待回车键,您可以使用该set命令通过虚拟变量请求用户输入,例如:

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

于 2013-04-30T14:34:43.467 回答
16

pause命令是你要找的。如果您只查看输入被击中的情况,您可以滥用该runas命令:

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

屏幕将被冻结,直到输入被击中。我更喜欢的set/p=是,如果您按下输入以外的其他按钮,它们将不会显示。

于 2013-04-30T14:33:23.557 回答
14

您可以使用pause命令执行此操作,例如:

dir
pause
echo Now about to end...
pause
于 2020-04-01T21:04:30.297 回答
4

根据您使用的操作系统,如果您很灵活,那么CHOICE可以用来等待几乎任何键EXCEPT输入

如果你真的指的是微软坚持称之为“命令提示符”的东西,它只是一个 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 结尾的内容被键入。

于 2013-04-30T19:33:16.500 回答
1

唯一有效的答案是pause命令。

虽然这不会专门等待“ENTER”键,但它会等待按下的任何键。

以防万一您希望它方便用户,pause是最好的选择。

于 2020-09-10T12:22:59.330 回答
0

npocmaka 的回答让我意识到runas /user:# "" >nul 2>&1- 但是,由于未记录的参数别名,我发现它可以显着缩短。2>&1似乎也没有必要。这是尽可能短的(不包括提示文本):

echo|set/p="Press <ENTER> to continue.."&runas/u: "">NUL

它的语法高亮不是很可读(并且 stackoverflow.com 仍然没有修复他们的批处理文件语法高亮),所以这是一个带有语法高亮的屏幕截图:

按继续..

于 2021-12-29T18:38:05.030 回答