如何禁止cmd.exe中的“终止批处理作业”

时间:2009-08-05 17:14:06

标签: batch-file cmd

我正在寻找一种抑制“终止批处理作业?(Y / N)”邀请的机制,只要我在从批处理文件启动的程序中按CTRL-C,我就会收到这样的邀请:

批处理文件:jsshell.bat:

@echo off
java -jar build-scripts\contrib\rhino1.7R1.jar

然后通过以下命令在cmd shell上启动它:

> jsshell.bat

它给了我一个可以被CTRL-C退出的shell,它在退出后给了我讨厌的消息

8 个答案:

答案 0 :(得分:25)

在这site,我终于找到了一个有效的解决方案:

script.cmd < nul

每次我在与上面一行相同的文件夹中创建名为script2.cmd的第二个脚本时,不必输入此内容。您可能想要反转名称。对我有用,但到目前为止仅在XP上测试过。

答案 1 :(得分:16)

该行为在cmd.exe源代码中实现,如果不修改cmd.exe,则无法关闭。但是,您可以 modify cmd.exe to not show the message

答案 2 :(得分:8)

是的,还有比修补cmd.exe更优雅的方法。把START放在你的命令面前。对于您的示例,该行将如下所示:“START java -jar build-scripts \ contrib \ rhino1.7R1.jar”

答案 3 :(得分:7)

不要忘记考虑通过避免批处理脚本来解决问题。

  • Doskey macros可以替换上面引用的单行批处理脚本。 (在Autorun脚本中加载它们。)
  • Cscript.exe可在每台现代Windows机器上使用,并可从命令行运行JavaScript和VBScript程序
  • 如果您为喜爱的脚本语言(Perl,Python,Ruby等)添加文件扩展名到PATHEXT环境变量并将脚本添加到路径中,则可以直接执行它们而无需批处理脚本。

答案 4 :(得分:7)

FWIW,管道'N'作为命令的输入使我处理一些批处理文件(但我实际上想要新窗口)。也许它对你也有用。

(echo. N)| cmd /c java -jar build-scripts\contrib\rhino1.7R1.jar

答案 5 :(得分:3)

下面的修改会禁止“终止批处理作业?(Y / N)”新的控制台窗口:

start cmd /c java -jar build-scripts\contrib\rhino1.7R1.jar

答案 6 :(得分:3)

@start cmd /c java -jar build-scripts\contrib\rhino1.7R1.jar
@exit

这只会生成一个窗口

答案 7 :(得分:1)

试试这个。它确实打开了一个新的控制台,但是当它打开时它会锁定另一个控制台。

@echo off
start /WAIT java -jar build-scripts\contrib\rhino1.7R1.jar