Board logo

标题: 能不能在批处理执行过程中按Ctrl + C直接退出,而不出现“ [打印本页]

作者: chujiafu     时间: 2004-12-24 00:00    标题: 能不能在批处理执行过程中按Ctrl + C直接退出,而不出现“

能不能在批处理执行过程中按Ctrl + C(或Ctrl + Break)直接退出,而不出现“ Terminate batch job (Y/N)?”的字样?能不能用if errorlevel n goto ...。如果能这样,那就太方便了。
作者: Michael     时间: 2004-12-25 00:00
choice
作者: chujiafu     时间: 2004-12-25 00:00
具体怎么用啊?
作者: willsort     时间: 2004-12-27 00:00
Ctrl+C的泛化讨论Re chujiafu:
    若要硬要直解这一问题,需要使用非常复杂的机理,比如修改DOS的中断处理或者利用COMMAND外壳应答和抽取错误提示,对于你的这一个问题,可能引起更多的问题,自然是得不偿失。
    二楼michael 的choice是一个中断批处理的有限的替代方案,可以在需要确定用户是否终止程序执行的代码处,插入choice语句,以询问用户的方式来决定是否终止程序,当然也可以不用询问而直接终止,这只需要插入一句跳转到程序最后的goto语句即可。
    但是choice只能在特定时刻询问用户,而不会在程序执行的任意时刻等待用户的终止选择。这两天我一直在寻找一种可以完全替代Ctrl+C终止批处理的方案,可是最终没有得到满意的答案。于是,我只好回头审视我为什么会得到这样的结果。我找不到Ctrl+C的完全替代者,可是我为什么要寻找Ctrl+C的完全替代者呢?因为使用Ctrl+C终止批处理很难禁止Terminate的终止提示。可是我又为什么要禁止Ctrl+C的终止提示呢?因为有用户提出了这样的要求。
    于是,很自然的,问题的解决回到了提问者自己手中。chujiafu兄,你为什么想要禁止Ctrl+C的终止提示呢?先不要急于回答,你可以认真回想一下提出这个问题之前的初衷,然后再考虑是不是要满足前一个问题,就一定要先解决这个问题。
    这是一个例子,当我们遇到一个难以解决的问题时,先考虑是不是一定要解决这个问题,是不是可以绕过这个障碍,通过另外的途径达到同样的目的地。

作者: chujiafu     时间: 2004-12-28 00:00
To willsort 兄:        我提出这个问题的情境是:在一个批处理的开头显示:“Press any key to continue,or Ctrl+C to Cancel.“给用户一个选择的机会。如果用户按任一键,则批处理继续执行下去;如果用户按了Ctrl+C则中止批处理的执行,退出批处理程序。这是我提出这个问题的初衷。