2013-11-21 46 views
2

我已经看到了几个关于这个主题,但我没有得到我的工作。 我想要做的就是从java程序打开cmd.exe。如何在java中打开cmd.exe

notepad.exe打开罚款。

的问题是,cmd.exe的dosent开放,代码编译好,并没有错误

这里是我的代码:

public class CMD { 

public static void main(String[] args) { 

    //Trying some variants how to start. 

    //String cmd = "C:\\WINDOWS\\system32\\cmd.exe"; 
    //String[] cmd = {"C:\\WINDOWS\\system32\\cmd.exe","start"}; 

    String[] cmd = {"C:\\WINDOWS\\system32\\cmd.exe","/c","start"}; 

    // notepad works fine 
    //String notepad = "C:\\WINDOWS\\system32\\notepad.exe"; 


try {   
    Runtime runtime = Runtime.getRuntime(); 
    //Process p = runtime.exec(notepad); 
    Process p = runtime.exec(cmd); 


} 

catch (java.io.IOException exception) { 
    System.out.println("Caught IOException: " + exception.getMessage()); 

    } 
} 
} 
+2

你的问题不能被发现。请重试。 – Maroun

+1

有什么问题?错误讯息?你有什么尝试? –

+0

可能重复[如何打开命令提示符并使用Java插入命令?](http://stackoverflow.com/questions/4688123/how-to-open-the-command-prompt-and-insert-commands-using -java) –

回答

7

试试这个..

public static void main(String args[]) { 
    try { 
     Runtime.getRuntime().exec("cmd.exe /c start"); 
     System.out.println("ok"); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
} 
+0

是的。这将起作用 – muthukumar

+0

提问者的代码也可以工作。所以只要没有问题描述,就不会有关于解决方案的知识。这里的代码可能会在提问者的机器上显示相同的问题,我们根本不知道。 – Holger

+0

确定已打印,但cmd.exe不启动或剂量得到显示 – Daniel

1

至于建议很多这里在SORuntime.getRuntime().exec(..)可能会给你带来麻烦。而是使用ProcessBuilder API。

我用下面的:

public static void run(String argument) throws IOException { 
     List<String> command = new ArrayList<String>(); 
     OsCheck.OSType osType = OsCheck.getOperatingSystemType(); 
     System.out.println("OS: " + osType); 
     String shell; 
     if(osType.toString().equals("Windows")) { 
      command.add("cmd.exe"); 
      command.add("/c"); 
     } else { 
      shell = "/bin/bash"; 
      command.add(shell); 
     } 
     command.add(argument); 
     InputStream inputStream = null; 
     InputStream errorStream = null; 
     try { 
      ProcessBuilder processBuilder = new ProcessBuilder(command); 
      Process process = processBuilder.start(); 

      inputStream = process.getInputStream(); 
      errorStream = process.getErrorStream(); 

      System.out.println("Process InputStream: " + IOUtils.toString(inputStream, "utf-8")); 
      System.out.println("Process ErrorStream: " + IOUtils.toString(errorStream, "utf-8")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (inputStream != null) { 
       inputStream .close(); 
      } 
      if (errorStream != null) { 
       errorStream.close(); 
      } 
     } 
    } 

实用程序:

public final class OsCheck { 
    /** 
    * Enum type which contains OS names. 
    */ 
    private static OSType detectedOS; 

    /** 
    * <p> 
    * Finds the OS 
    * </p> 
    * 
    * @return One of the values of the enum OSType 
    */ 
    public static OSType getOperatingSystemType() { 
     if (detectedOS == null) { 
      String OS = System.getProperty("os.name", "generic").toLowerCase(); 
      if (OS.contains("win")) { 
       detectedOS = OSType.Windows; 
      } else if ((OS.contains("mac")) || (OS.contains("darwin"))) { 
       detectedOS = OSType.MacOS; 
      } else { 
       detectedOS = OSType.Linux; 
      } 
     } 
     return detectedOS; 
    } 

    /** 
    * Represents the popular os types i.e Windows, or MacOS or Linux 
    */ 
    public enum OSType { 
     Windows, MacOS, Linux 
    } 
} 
1

使用Java只有两行代码都需要打开CMD。

Runtime runtime = Runtime.getRuntime(); 
Process p = runtime.exec("cmd.exe /c start"); 

-------------->例如< ------------

public class Cmd { 

     public static void main(String[] args) { 
      try { 

       //Create the Process Instance, You don’t need to Import anything for this. 

       Process p; 

       //To Execute the Process containg the Command as the Parameter 

       p = Runtime.getRuntime().exec("cmd /c start cmd"); 

       //As the same way you can use all the commands to Execute your favorite apps. 

      } catch (Exception e) { 
      } 
     } 
    }