使用ProcessBuilder启动CMD

时间:2012-06-08 18:28:42

标签: java cmd runtime.exec processbuilder

我试图通过使用以下代码在Windows中启动CMD应用程序,但它无法按预期工作。来自不同网站的几个示例显示,“cmd”作为ProcessBuilder构造中的参数应该有效。

如何让我的Java应用程序在Windows中打开CMD应用程序?

 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());
         }  
     }
 }

当我尝试使用不存在的应用程序时,它实际上会输出错误,这意味着它实际上运行“CMD”。但CMD应用程序没有按预期弹出?

3 个答案:

答案 0 :(得分:14)

要与ProcessBuilder一起使用,您必须将命令分开:

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

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

答案 1 :(得分:9)

您需要使用start命令。实际上,即使我没有看到新的命令提示符弹出,但您可以检查是否确实使用cmd.exe启动了新的task manager

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

尽管如此,使用Runtime.exec()可以实现相同的功能,这实际上会弹出一个新的命令提示符。

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

答案 2 :(得分:0)

如果你是 windows 使用这个命令

ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/c", "ping -n 3 google.com");