代码之家  ›  专栏  ›  技术社区  ›  Martin

如何在子shell中运行cmd.exe批处理文件

  •  9
  • Martin  · 技术社区  · 14 年前

    我有一个批处理文件,通常是这样调用的:

     longjob.cmd >result.txt 2>&1
    

    这可以正常工作,但是脚本在执行期间会更改目录,将我的shell留在该目录中—这是一个麻烦。

    有没有办法在子shell中运行命令,同时仍然允许捕获输出?

    我试过了

    cmd longjob.cmd >result.txt 2>&1
    

    它只是等待出口命令。

    我也试过

    start longjob.cmd >result.txt 2>&1
    

    它确实运行脚本,但在一个新窗口中,所有输出都发送到该窗口而不是文件。

    2 回复  |  直到 14 年前
        1
  •  12
  •   Leo Davidson    14 年前

    尝试

    CMD /C longjob.cmd >result.txt 2>&1
    

    不知道它将如何处理重定向,但是CMD/C让你告诉CMD要运行什么,当它完成时它应该退出。(CMD/K让你告诉它运行某些东西,但在完成的时候坚持)。如果在一个内部运行,它将重新使用现有的控制台窗口。

        2
  •  0
  •   Colin Pickard    14 年前

    这个 call 命令可能是你想要的。

    call longjob.cmd >result.txt 2>&1