是否可以在 MS-DOS 批处理文件中暂停脚本并等待用户按 Enter 键?
我希望在 for 循环中执行此操作。每次迭代后,我希望脚本暂停并等待用户点击“Enter”
是否可以在 MS-DOS 批处理文件中暂停脚本并等待用户按 Enter 键?
我希望在 for 循环中执行此操作。每次迭代后,我希望脚本暂停并等待用户点击“Enter”
有一个pause
命令可以做到这一点,尽管它不是专门的输入键。
如果您真的只想等待回车键,您可以使用该set
命令通过虚拟变量请求用户输入,例如:
set /p DUMMY=Hit ENTER to continue...
pause
命令是你要找的。如果您只查看输入被击中的情况,您可以滥用该runas
命令:
runas /user:# "" >nul 2>&1
屏幕将被冻结,直到输入被击中。我更喜欢的set/p=
是,如果您按下输入以外的其他按钮,它们将不会显示。
您可以使用pause
命令执行此操作,例如:
dir
pause
echo Now about to end...
pause
根据您使用的操作系统,如果您很灵活,那么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 结尾的内容被键入。
唯一有效的答案是pause
命令。
虽然这不会专门等待“ENTER”键,但它会等待按下的任何键。
以防万一您希望它方便用户,pause
是最好的选择。
npocmaka 的回答让我意识到runas /user:# "" >nul 2>&1
- 但是,由于未记录的参数别名,我发现它可以显着缩短。2>&1
似乎也没有必要。这是尽可能短的(不包括提示文本):
echo|set/p="Press <ENTER> to continue.."&runas/u: "">NUL
它的语法高亮不是很可读(并且 stackoverflow.com 仍然没有修复他们的批处理文件语法高亮),所以这是一个带有语法高亮的屏幕截图: