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

Mar*_*tin 9 windows cmd

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

 longjob.cmd >result.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但脚本在执行期间更改了目录,将我的shell保留在该目录中 - 这是一个令人讨厌的问题.

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

我试过了

cmd longjob.cmd >result.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

它只是等待退出命令.

我也试过了

start longjob.cmd >result.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

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

Leo*_*son 12

尝试

CMD /C longjob.cmd >result.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

不确定它将如何处理重定向,但是CMD/C允许您告诉CMD要运行什么以及它应该在完成时退出.(CMD/K让你告诉它运行一些东西,但在完成时就会坚持下去.)如果在一个内部运行,它将重新使用现有的控制台窗口.