【问题标题】:MS-DOS Batch file pause with enter keyMS-DOS 批处理文件暂停与回车键
【发布时间】:2013-04-24 12:26:38
【问题描述】:

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

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

【问题讨论】:

    标签: batch-file dos


    【解决方案1】:

    npocmaka's answer 让我知道runas /user:# "" >nul 2>&1 - 但是,由于未记录的参数别名,我发现它可以显着缩短。 2>&1 似乎也没有必要。这是尽可能短的(不包括提示文本):

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

    语法高亮不太可读(stackoverflow.com 还没有修复他们的批处理文件语法高亮),所以这里有一个带有语法高亮的屏幕截图:

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        您可以使用pause 命令来完成,例如:

        dir
        pause
        echo Now about to end...
        pause
        

        【讨论】:

        • pause 确实是MS-DOS 的唯一有效答案(所有其他答案仅在cmd 中有效)。因此,对于这个特殊问题,您的答案实际上是唯一完全正确的答案(尽管早在 7 年多以前就有人提出过)
        【解决方案4】:

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

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

        屏幕将被冻结,直到输入被击中。我比set/p= 更喜欢的是,如果您按其他按钮而不是输入,它们将不会显示。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            如果您真的只想等待回车键,您可以使用set 命令通过虚拟变量请求用户输入,例如:

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

            【讨论】:

            • 你不需要指定一个变量名:set /p=Hit ENTER to continue...,或者如果你不需要提示,只需简单的set /p=
            • 由于某种原因,我的应用程序正在通过暂停逻辑。很奇怪。
            • 在此上下文中使用“app”一词似乎有点奇怪(批处理文件)
            • 它对我不起作用。仅在“设置”解决/保存到环境中时从第二次启动开始工作。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-20
            • 1970-01-01
            • 1970-01-01
            • 2012-05-28
            • 1970-01-01
            相关资源
            最近更新 更多