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

cel*_*tex 57 cmd batch-file

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

批处理文件:jsshell.bat:

@echo off
java -jar build-scripts\contrib\rhino1.7R1.jar
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式在cmd shell上启动它:

> jsshell.bat
Run Code Online (Sandbox Code Playgroud)

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

Gri*_*ave 24

在这个网站上,我终于找到了一个有效的解决方案

script.cmd < nul
Run Code Online (Sandbox Code Playgroud)

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


Wir*_*Guy 16

该行为在cmd.exe源代码中实现,如果不修改cmd.exe,则无法关闭该行为.但是,您可以修改cmd.exe以不显示该消息.

  • 谢谢,但修补cmd.exe是我不想做的事情. (20认同)
  • 神圣的废话是一些硬核修复.当然必须有一个不那么突兀的方式? (17认同)
  • 你最后一次上NOOP的时候是什么时候?好吧,如果你想让其他人使用,那就不是一个好的解决方案. (3认同)
  • 在Windows 7上不起作用; cmd.exe发生了很大变化. (3认同)
  • @微软,你在听吗? (2认同)

小智 8

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

  • 这似乎打开了一个新的控制台窗口并在其中运行. (6认同)
  • 使用开始/ B不得到一个新窗口 (2认同)
  • @JonnyLeeds 你不会通过这种方式得到一个新窗口,但是另一个问题出现了——当你在原始 shell 窗口中输入“exit”时,它不会关闭。 (2认同)
  • @Jonny Leeds 使用 `start /B` 除了抑制提示“终止批处理作业”并获得一个新窗口外,您还可以抑制 Ctrl-C。 (2认同)

Dan*_*ich 7

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

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


Bra*_*rad 7

FWIW,管道'N'作为命令的输入工作了我的一些批处理文件(但我实际上想要新的窗口).也许它也适合你.

(echo. N)| cmd /c java -jar build-scripts\contrib\rhino1.7R1.jar
Run Code Online (Sandbox Code Playgroud)