how to run a cmd.exe batch file in a sub shell

2020-06-12 06:49发布

问题:

I have a batch file that I usually invoke like this:

 longjob.cmd >result.txt 2>&1

This works fine, but the script changes directory during its execution leaving my shell in that directory - which is a nuisance.

Is there a way to run the command within a sub-shell - while still allowing the output to be captured ?

I have tried

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

which just sits waiting for an exit command.

Also I tried

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

which does run the script, but in a new window and all output is sent to that window instead of the file.

回答1:

Try

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

Not sure how it'll deal with the redirection, but CMD /C lets you tell CMD what to run and that it should exit when done. (CMD /K lets you tell it to run something but stick around when done.) It will re-use the existing console window if run within one.



回答2:

The call command might be what you want.

i.e.

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


标签: windows cmd