是否可以在 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 仍然没有修复他们的批处理文件语法高亮),所以这是一个带有语法高亮的屏幕截图: