java 怎么调用windows外部命令

2026年09月22日 14:27
有1个网友回答
网友(1):

可以使用Java Process类,下面是一些例子:

Process类是一个抽象类,方法都是抽象的,它封装了一个进程,也就是一个可执行的程序     该类提供进程的输入、执行输出到进程、等待进程的完成和检查进程的退出状态及销毁进程的方法
     ProcessBuilder.start()和Runtime.exec方法创建一个本机进程并返回Process子类的一个实例,该实例可以控制进程并获取相关的信息
     其它的概要请参考JDK文档
     下面就开始举几个简单的示例:
     (1)执行简单的DOS命令,如打开一个记事本
    
Java代码 
package com.iwtxokhtd.other;   
  
import java.io.IOException;   
  
public class ProcessTest {   
  
    public static void main(String[] args) {   
        try {   
                        Process proc=Runtime.getRuntime().exec("notepad");   
        } catch (IOException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        }   
  
    }   
  
}  
[java] view plain copy 
package com.iwtxokhtd.other;  
  
import java.io.IOException;  
  
public class ProcessTest {  
  
    public static void main(String[] args) {  
        try {  
                        Process proc=Runtime.getRuntime().exec("notepad");  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
  
    }  
  
}  
 
(2)使用它的其它构造方法执行相关的命令,如下例:
 
Java代码 
package com.iwtxokhtd.other;   
  
import java.io.IOException;   
  
public class ProcessTest {   
  
    public static void main(String[] args) {   
        try {   
               
            String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";   
            String message="www.google.com";   
            String []cmd={exeFullPathName,message};   
            Process proc=Runtime.getRuntime().exec(cmd);   
        } catch (IOException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        }   
  
    }   
  
}  
[java] view plain copy 
package com.iwtxokhtd.other;  
  
import java.io.IOException;  
  
public class ProcessTest {  
  
    public static void main(String[] args) {  
        try {  
              
            String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";  
            String message="www.google.com";  
            String []cmd={exeFullPathName,message};  
            Process proc=Runtime.getRuntime().exec(cmd);  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
  
    }  
  
}  
 
执行上述命令可以打开Google网站
(3)列出系统正在运行的所有进程信息
  
Java代码 
package com.iwtxokhtd.other;   
  
import java.io.BufferedReader;   
import java.io.IOException;   
import java.io.InputStreamReader;   
  
public class ListAllProcessTest {   
  
    //列出所有的进程信息   
    public static void main(String[] args) {   
        BufferedReader br=null;   
        try {   
            Process proc=Runtime.getRuntime().exec("tasklist");   
            br=new BufferedReader(new InputStreamReader(proc.getInputStream()));   
            @SuppressWarnings("unused")   
            String line=null;   
            System.out.println("打印所有正在运行的进程信息");   
            while((line=br.readLine())!=null){   
                System.out.println(br.readLine());   
            }   
        } catch (IOException e) {   
            e.printStackTrace();   
        }finally{   
            if(br!=null){   
                try {   
                    br.close();   
                } catch (Exception e) {   
                    e.printStackTrace();   
                }   
            }   
        }   
           
  
    }   
  
}  
[java] view plain copy 
package com.iwtxokhtd.other;  
  
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
  
public class ListAllProcessTest {  
  
    //列出所有的进程信息  
    public static void main(String[] args) {  
        BufferedReader br=null;  
        try {  
            Process proc=Runtime.getRuntime().exec("tasklist");  
            br=new BufferedReader(new InputStreamReader(proc.getInputStream()));  
            @SuppressWarnings("unused")  
            String line=null;  
            System.out.println("打印所有正在运行的进程信息");  
            while((line=br.readLine())!=null){  
                System.out.println(br.readLine());  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }finally{  
            if(br!=null){  
                try {  
                    br.close();  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
          
  
    }  
  
}  
 
(4)判断一个具体的进程是否正在运行,如下例:
Java代码 
package com.iwtxokhtd.other;   
import java.io.BufferedReader;   
import java.io.InputStreamReader;   
public class FindProcessExeTest   
{   
    public static void main(String []args){   
           
        if(findProcess("QQ.exe")){   
            System.out.println("------判断指定的进程是否在运行------");   
            System.out.println("QQ.exe该进程正在运行!");   
        }else{   
            System.out.println("------判断指定的进程是否在运行------");   
            System.out.println("QQ.exe该进程没有在运行!");   
        }   
  
    }   
    public static boolean findProcess(String processName){   
        BufferedReader br=null;   
        try{   
              
            //下面这句是列出含有processName的进程图像名   
            Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");   
            br=new BufferedReader(new InputStreamReader(proc.getInputStream()));   
            String line=null;   
            while((line=br.readLine())!=null){   
                //判断指定的进程是否在运行   
                if(line.contains(processName)){   
                    return true;   
                }   
            }   
               
            return false;   
        }catch(Exception e){   
            e.printStackTrace();   
            return false;   
        }finally{   
            if(br!=null){   
                try{   
                    br.close();   
                }catch(Exception ex){   
                }   
            }   
               
        }   
    }   
}  
[java] view plain copy 
package com.iwtxokhtd.other;  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
public class FindProcessExeTest  
{  
    public static void main(String []args){  
          
        if(findProcess("QQ.exe")){  
            System.out.println("------判断指定的进程是否在运行------");  
            System.out.println("QQ.exe该进程正在运行!");  
        }else{  
            System.out.println("------判断指定的进程是否在运行------");  
            System.out.println("QQ.exe该进程没有在运行!");  
        }  
  
    }  
    public static boolean findProcess(String processName){  
        BufferedReader br=null;  
        try{  
             
            //下面这句是列出含有processName的进程图像名  
            Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");  
            br=new BufferedReader(new InputStreamReader(proc.getInputStream()));  
            String line=null;  
            while((line=br.readLine())!=null){  
                //判断指定的进程是否在运行  
                if(line.contains(processName)){  
                    return true;  
                }  
            }  
              
            return false;  
        }catch(Exception e){  
            e.printStackTrace();  
            return false;  
        }finally{  
            if(br!=null){  
                try{  
                    br.close();  
                }catch(Exception ex){  
                }  
            }  
              
        }  
    }  
}  
 
 其它的用法可以参考JDK文档,这里就不一一举例,毕竟它用得不多。