为什么“终止批处理作业”提示上的 CTRL-C 表示“继续”?

Seb*_*iot 5 windows cmd.exe

我们的应用程序使用 3 个数据库,一个用于客户端数据,两个用于配置数据。为防止破坏客户端数据,删除客户端数据库的批处理文件首先显示警告消息,然后暂停。

我只是不小心在我的机器上调用了删除客户端数据库(没有丢失;它只是一个副本),当暂停提示出现时,我只是按了+ 。Windows 没有直接终止,而是询问我是否要终止批处理作业CtrlC

所以我只是再次按下Ctrl+C因为,IMO,Ctrl+C意味着不要继续,因为无论如何我的手指仍然放在这些键上。批处理文件只是继续并删除了数据库(意味着我需要恢复它,使我的电脑无法使用两个小时)。

为什么 WindowsCMD.EXE认为当我在终止批处理作业提示上按CTRL+C时,这意味着我实际上想要继续(换句话说,为什么+在这种情况下表示Y,而不是N)?CtrlC

在 Linux 中,shell 实际上会执行您所要求的操作,即在不提出毫无意义的问题的情况下终止脚本。没有人会意外地在 DOS 框中按Ctrl+ C(除非他们认为他们在文本编辑器中,而不是在 DOS 框中)。

pbi*_*ies 2

有两个级别CtrlC

  1. 任何在前台运行的 .exe 文件的级别,这可以或不停止其工作
  2. 第二级是 .bat 文件,您可以从中运行 .exe 文件

第三级是 cmd.exe 本身。

这里的问题是,它CtrlC经历了两个级别,实际上,系统会询问您是否要停止批处理文件(级别 2),因此,如果您说Y- 您的批处理文件将立即终止。如果您说N可能发生的情况是批处理文件将从下一个命令继续运行。