cmd提示卡住并继续按Enter键

时间:2012-11-28 07:19:49

标签: dos command-prompt cmd

当命令提示符正在运行进程然后它被卡住并且进程也在休眠时,是否有人遇到过这种情况。 然后,当我们在cmd窗口中按Enter键时,过程继续。

有什么方法可以避免这种情况吗? 或者可以处理吗?

4 个答案:

答案 0 :(得分:9)

其他答案是错误的! Windows控制台有一个单独的模式,称为“标记模式”,用于选择文本。在这种模式下,屏幕将被冻结,文本将进入缓冲区,如果缓冲区已满,则会阻止正在运行的进程

Mark mode

如果启用了快速编辑模式(默认为disabled in older Windows但为enabled in Windows 10),则在控制台窗口中单击将激活标记模式并得到您观察到的结果

很容易意外单击控制台并停止命令。当您按 Enter Esc 时,所选文本将被复制到剪贴板,并且退出标记模式,因此该过程将再次运行。 优先级在这里绝对无关紧要,因为如果缓冲区已满,则无论优先级如何,该过程将永远被阻塞直到退出标记模式。有一些输入时,控制台不会更改优先级。尝试打开一个以最高优先级输出大量数据的应用程序,然后单击控制台,即使CPU处于空闲状态,该应用程序仍会无限期被阻止

以下是Windows 8控制台中QuickEdit模式设置的示例:

cmd

要解决此问题,如果不需要,可以禁用快速编辑模式。在这种情况下,复制将更加麻烦,因为您必须打开上下文菜单,然后选择 Edit> Mark 。如果您正在编写自己的控制台应用程序,也可以通过将ENABLE_QUICK_EDIT_MODE设置为SetConsoleMode()来禁用QuickEdit模式

另请参见

答案 1 :(得分:1)

今天,在执行包含TFSBuild的批处理文件时发生在我身上。 我已经收到来自TFSBuild的电子邮件通知,通知它成功,但是不知何故该批处理文件没有进行到下一行。

我等了1个小时。 我按Enter键,将其标记为Edit等,但这些都不起作用。 然后,我按Ctrl+C尝试终止该批处理文件。 当询问我是否要终止时,我输入了N。 奇怪的是,此后继续处理批处理文件。

答案 2 :(得分:0)

如果其他进程正在吸取所有周期并且具有更高的prio,那么您的进程可能会停止。用户输入可能只是给它一个prio提升,所以它再次启动。

答案 3 :(得分:0)

我将调用程序的行更改为:

start /hight <path-to-program> <params>

这意味着以较高的优先级启动程序。它更快,并且不需要您在执行过程中按任何键