10

我正在尝试使用以下代码在 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 应用程序没有按预期弹出?

4

3 回答 3

15

要将它与 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();
于 2012-11-13T12:47:08.270 回答
9

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

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

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

Runtime.getRuntime().exec("cmd.exe /C start");
于 2012-06-08T18:48:11.900 回答
0

如果您是 Windows,请使用此命令

ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/c", "ping -n 3 google.com");
于 2021-05-19T12:20:45.963 回答