The Java system calls the cmd command and executes the exe program

  • 2020-05-07 19:37:47
  • OfStack

Java invokes the cmd command and outputs the display information:


package com.anxin.cmd.test; 
 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 

public class Command { 
 
 public static void main(String[] args) { 
  try { 
   Runtime rt = Runtime.getRuntime(); 
   Process pr = rt.exec("cmd /c dir"); // cmd /c calc 
   // Process pr = rt.exec("D:\\xunlei\\project.aspx"); 
 
   BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream(), "GBK")); 
 
   String line = null; 
 
   while ((line = input.readLine()) != null) { 
    System.out.println(line); 
   } 
 
   int exitVal = pr.waitFor(); 
   System.out.println("Exited with error code " + exitVal); 
 
  } catch (Exception e) { 
   System.out.println(e.toString()); 
   e.printStackTrace(); 
  } 
 } 
} 

Java three ways to start the native application EXE:

mode 1: use cmd mode  


/** 
 *  perform cmd The command  
 * 
 * @param command 
 * @throws IOException 
 */ 
public static String executeCmd(String command) throws IOException { 
 log.info("Execute command : " + command); 
 Runtime runtime = Runtime.getRuntime(); 
 Process process = runtime.exec("cmd /c " + command); 
 BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8")); 
 String line = null; 
 StringBuilder build = new StringBuilder(); 
 while ((line = br.readLine()) != null) { 
  log.info(line); 
  build.append(line); 
 } 
 return build.toString(); 
} 
 
executeCmd(start "AXAdWebBrowser" "D:\AXAdsBrowser\AXAdWebBrowser.exe"); 

second way: call cmd with ProcessBuilder


/** 
 *  Start the application  
 * 
 * @param programName 
 * @return 
 * @throws IOException 
 */ 
public static void startProgram(String programPath) throws IOException { 
 log.info(" Start the application: " + programPath); 
 if (StringUtils.isNotBlank(programPath)) { 
  try { 
   String programName = programPath.substring(programPath.lastIndexOf("/") + 1, programPath.lastIndexOf(".")); 
   List<String> list = new ArrayList<String>(); 
   list.add("cmd.exe"); 
   list.add("/c"); 
   list.add("start"); 
   list.add("\"" + programName + "\""); 
   list.add("\"" + programPath + "\""); 
   ProcessBuilder pBuilder = new ProcessBuilder(list); 
   pBuilder.start(); 
  } catch (Exception e) { 
   e.printStackTrace(); 
   log.error(" Application: " + programPath + " Does not exist! "); 
  } 
 } 
} 

third way: launch the application   using Desktop


/** 
 *  Start the application  
 * 
 * @param programName 
 * @return 
 * @throws IOException 
 */ 
public static void startProgram(String programPath) throws IOException { 
 log.info(" Start the application: " + programPath); 
 if (StringUtils.isNotBlank(programPath)) { 
  try { 
   Desktop.getDesktop().open(new File(programPath)); 
  } catch (Exception e) { 
   e.printStackTrace(); 
   log.error(" Application: " + programPath + " Does not exist! "); 
  } 
 } 
} 


Related articles: