【问题标题】:How to terminate only the inner batch job如何仅终止内部批处理作业
【发布时间】:2016-11-08 23:50:10
【问题描述】:

假设有一些 .bat 文件需要在 .cmd 批处理脚本中运行。这个内部 .bat 文件在本地主机上有一系列用户交互,并且只能使用 ctrl+c 结束。

问题是:有没有办法让外部批处理脚本在内部脚本终止后恢复?还是按 ctrl+c 就完事了?

我尝试为内部脚本提供不同的出路,结果却被告知我不允许更改该文件。我也做了相当多的研究,但还没有找到解决方案。如果我忽略了什么,请原谅我!我想避免弹出两个窗口或无关的终止消息。

【问题讨论】:

  • 所以你使用call inner.bat 运行内部脚本?也许cmd /C inner.batstart "" /WAIT inner.bat 可以帮助...
  • @aschipfl 谢谢,这很有帮助, cmd /C 有效,但现在我收到了两个终止请求。只想终止内部的并让外部的顺利继续
  • @aschipfl 与在新窗口中开始相同的问题。不过谢谢,肯定更近了。
  • @aschipfl 另一个不错的选择是有两个终止消息,其中第一个是标准消息,而第二个是抑制/自定义消息。对此有何建议?

标签: windows batch-file scripting terminate control-c


【解决方案1】:

我能想到的唯一处理方法是在outer.cmd 中使用以下行来调用inner.bat——缺点是接收到一个新的命令提示符窗口来执行inner.bat

start "" /WAIT cmd /C "inner.bat"

(交换 startcmd 不起作用,因为新窗口可能会无意中保持打开状态。)

请注意,对于inner.bat,所有控制台输入和输出都通过新窗口处理,因此outer.cmd(例如outer.cmd > "return.txt")的任何重定向都不会包含来自inner.bat 的数据。

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多