Start CMD by using ProcessBuilder

陌路散爱 提交于 2019-11-26 22:18:18

问题


I am trying to start the CMD application in windows by using the following code, but it doesn't work as expected. Several examples from different websites shows that "cmd" as an argument in the ProcessBuilder construct should work.

What do I have to do to make my Java app open the CMD application in windows?

 public class JavaTest
 {
     public static void main(String[] args) 
     {
         ProcessBuilder pb = new ProcessBuilder("cmd");

         try 
         {
             pb.start();
             System.out.println("cmd started");
         } 
         catch (IOException e) 
         {
             System.out.println(e.getMessage());
         }  
     }
 }

When I try to use a non-existing application it actually prints out an error, so that means it actually runs "CMD". But the CMD application doesn't pop up as expected?


回答1:


You need to use the start command. Actually, even I don't see a new command prompt popping up, but you can check that a new cmd.exe is definitely started using your task manager.

ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start");

Though, the same functionality can be achieved using Runtime.exec(), and this actually pops up a new command prompt.

Runtime.getRuntime().exec("cmd.exe /C start");



回答2:


To use it with ProcessBuilder you must separate the commands like this:

final List<String> commands = new ArrayList<String>();                

commands.add("cmd.exe");
commands.add("/C");
commands.add("start");
ProcessBuilder pb = new ProcessBuilder(commands);
pb.start();


来源:https://stackoverflow.com/questions/10954194/start-cmd-by-using-processbuilder

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!