使用ProcessBuilder启动CMD

Bir*_*man 9 java cmd runtime.exec processbuilder

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

我需要做些什么才能让我的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());
         }  
     }
 }
Run Code Online (Sandbox Code Playgroud)

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

Gui*_*rme 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();
Run Code Online (Sandbox Code Playgroud)


Kaz*_*ara 9

您需要使用start命令.实际上,即使我没有看到一个新的命令提示符弹出,但你可以检查一个新cmd.exe的肯定是开始使用你的task manager.

ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start");
Run Code Online (Sandbox Code Playgroud)

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

Runtime.getRuntime().exec("cmd.exe /C start");
Run Code Online (Sandbox Code Playgroud)