使用Enter键暂停MS-DOS批处理文件


146

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

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

Answers:


247

pause尽管不是回车键,但有一个命令可以做到这一点。

如果您确实只想等待回车键,则可以使用该set命令来请求用户输入一个虚拟变量,例如:

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


17
您无需指定变量名:set /p=Hit ENTER to continue...,或者仅set /p=在不需要提示时指定。
dbenham

2
由于某种原因,我的应用程序超出了暂停逻辑。很奇怪。
ouflak 2013年

11
在这种情况下(批处理文件)使用“ app”一词似乎有点不可思议
Adrian Grigore 2014年

它对我不起作用。只有在“设置”成功/保存到环境后,才能从第二次启动开始工作。
ses 2014年

13

pause命令就是您想要的。如果您仅查看按回车键的情况,则可以滥用以下runas命令:

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

屏幕将被冻结,直到set/p=按回车。


4

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

dir
pause
echo Now about to end...
pause

1
pause确实是唯一有效的答案MS-DOS(所有其他答案cmd仅在其中起作用)。因此,对于这个特殊问题,您的答案实际上是唯一完全正确的答案(尽管已经提出了7年以上的建议)
Stephan

3

根据您使用的操作系统,如果您很灵活,则CHOICE可以用来等待几乎所有的按键EXCEPT输入

如果您真正指的是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结尾的其他内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.