MS-DOS 批处理文件暂停输入键

是否有可能在 MS-DOS 批处理文件暂停脚本,等待用户点击输入键?

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

364657 次浏览

pause命令就是你要找的。 如果你只看输入时的情况,你可以滥用 runas命令:

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

屏幕将被冻结,直到输入为止。比起 set/p=,我更喜欢的是,如果你按下其他按钮而不是输入,它们将不会显示出来。

有一个 pause命令可以做到这一点,尽管它不是专门的输入键。

如果您确实希望只等待输入键,可以使用 set命令通过一个虚拟变量请求用户输入,比如:

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

根据您使用的操作系统,如果您是灵活的,那么 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 结尾的键入。

你可以使用 pause命令,例如:

dir
pause
echo Now about to end...
pause

唯一有效的答案是 pause命令。

虽然这不会专门等待“ ENTER”键,但它会等待按下的任何键。

为了方便用户,pause是最好的选择。

Npomaka 的回答 让我意识到了 runas /user:# "" >nul 2>&1-然而,我发现它可以被显著地缩短,这多亏了一个未记录的参数别名。2>&1也似乎是不必要的。这是您能做到的最短的内容(不包括提示文本) :

echo|set/p="Press <ENTER> to continue.."&runas/u: "">NUL

这个语法突显的可读性不是很好( stackoverflow.com 还没有修复他们的批处理文件语法突显) ,所以这里有一个语法突显的截图:

Press  to continue..