在MS-DOS批处理文件中,是否可以暂停脚本并等待用户按下回车键?
我希望在for循环内实现此操作。每次迭代后,我希望脚本暂停并等待用户按下“Enter”键。
在MS-DOS批处理文件中,是否可以暂停脚本并等待用户按下回车键?
我希望在for循环内实现此操作。每次迭代后,我希望脚本暂停并等待用户按下“Enter”键。
有一个 pause
命令可以实现暂停,尽管它不是专门用于回车键。
如果你真的想要等待只有回车键,你可以使用 set
命令通过虚拟变量请求用户输入,类似于:
set /p DUMMY=按回车键继续...
您可以使用pause
命令来实现,例如:
dir
pause
echo Now about to end...
pause
pause
命令是你要找的。
如果你只想要在按下enter键时暂停,你可以滥用runas
命令:
runas /user:# "" >nul 2>&1
屏幕将会被冻结直到按下回车键。我比set/p=
更喜欢的是,如果你按下回车键以外的其他按钮,它们不会被显示。CHOICE
可用于等待几乎任何键,EXCEPT
是enter键。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)
该程序将检测用户输入的是单纯的回车键还是以回车键结尾的其他字符。
唯一有效的答案是使用 pause
命令。
尽管它不会特别等待'ENTER'键,但它会等待任何按键。
如果您希望对用户更方便,pause
是最佳选择。
npocmaka的回答让我意识到了runas /user:# "" >nul 2>&1
,然而,我发现它可以通过一个未记录的参数别名来显著缩短。 2>&1
似乎也是不必要的。这是你可以做到的最短(不包括提示文本):
echo|set/p="Press <ENTER> to continue.."&runas/u: "">NUL
使用语法高亮后并不容易阅读(stackoverflow.com仍未修复批处理文件的语法高亮),因此这里提供了带有语法高亮的屏幕截图:
set /p=按回车继续...
,或者如果你不需要提示,可以简单地使用set /p=
。 - dbenham