【发布时间】:2013-04-24 12:26:38
【问题描述】:
是否可以在 MS-DOS 批处理文件中暂停脚本并等待用户按 Enter 键?
我希望在 for 循环中执行此操作。每次迭代后,我希望脚本暂停并等待用户点击“Enter”
【问题讨论】:
标签: batch-file dos
是否可以在 MS-DOS 批处理文件中暂停脚本并等待用户按 Enter 键?
我希望在 for 循环中执行此操作。每次迭代后,我希望脚本暂停并等待用户点击“Enter”
【问题讨论】:
标签: batch-file dos
npocmaka's answer 让我知道runas /user:# "" >nul 2>&1 - 但是,由于未记录的参数别名,我发现它可以显着缩短。 2>&1 似乎也没有必要。这是尽可能短的(不包括提示文本):
echo|set/p="Press <ENTER> to continue.."&runas/u: "">NUL
语法高亮不太可读(stackoverflow.com 还没有修复他们的批处理文件语法高亮),所以这里有一个带有语法高亮的屏幕截图:
【讨论】:
唯一有效的答案是pause 命令。
虽然这不会专门等待“ENTER”键,但它会等待任何按下的键。
为了方便用户,pause 是最好的选择。
【讨论】:
您可以使用pause 命令来完成,例如:
dir
pause
echo Now about to end...
pause
【讨论】:
pause 确实是MS-DOS 的唯一有效答案(所有其他答案仅在cmd 中有效)。因此,对于这个特殊问题,您的答案实际上是唯一完全正确的答案(尽管早在 7 年多以前就有人提出过)
pause 命令就是你要找的。
如果您只查看输入时的情况,您可以滥用runas 命令:
runas /user:# "" >nul 2>&1
屏幕将被冻结,直到输入被击中。我比set/p= 更喜欢的是,如果您按其他按钮而不是输入,它们将不会显示。
【讨论】:
根据您使用的操作系统,如果您很灵活,那么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 命令可以做到这一点,尽管它不是专门的回车键。
如果您真的只想等待回车键,您可以使用set 命令通过虚拟变量请求用户输入,例如:
set /p DUMMY=Hit ENTER to continue...
【讨论】:
set /p=Hit ENTER to continue...,或者如果你不需要提示,只需简单的set /p=。