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

时间:2010-11-18 13:48:38

标签: windows cmd

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

 longjob.cmd >result.txt 2>&1

这样可以正常工作,但脚本在执行期间更改了目录,而将我的shell保留在该目录中 - 这很麻烦。

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

我试过了

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

只是等待退出命令。

我也试过

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

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

2 个答案:

答案 0 :(得分:12)

尝试

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

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

答案 1 :(得分:0)

call 命令可能就是您想要的。

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