简体   繁体   中英

How do I run command line from Java code in the background?

I have the following line to run a batch file,

Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");

But I want it to run in the background and not display the command line to the user. How can I change it to do this?

The problem is that the command window opens and intrupts the programs GUI. I just want the command window to not be visible while it is executing the batch file.

Removing the 'start' completely will do what you want (as this is what is creating the window):

Process process = Runtime.getRuntime().exec("cmd /c rake.bat");

I have tested this and it works, ofcourse if you want to communicate with the command prompt you'd have to have Input and Output streams, also not forgetting your Error stream As stated in the comment though removing 'start' on XP wont help (as it wont work).

I'm not quite sure what you mean by 'in the background'

If you mean simply that the window isn't visible, this SO answer may be of use.

If (however) you mean that you want your Java program to continue running whilst this executes, then you should spawn this off in a separate thread .

Regardless of the above, be careful to capture your batch file's sdtout/stderr .

Process process = Runtime.getRuntime().exec("cmd /c start rake.bat");

If you are calling the above line from a java process to execute the batch file. This will by default run in background.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM