Java调用Windows命令

Java调用Windows命令主要用到两个类:

java.lang.Runtime

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。

java.lang.Process

ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。 对于带有 Process 对象的 Java 进程,没有必要异步或并发执行由 Process 对象表示的进程。

下面是个简单例子:

package test;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * Java调用Windows命令测试
 * @author liuyazhuang
 *
 */
public class Test {
	public static void main(String args[]) {
        testWinCmd();
        dirOpt();
    }

    public static void testWinCmd() {
        System.out.println("------------------testWinCmd()--------------------");
        Runtime runtime = Runtime.getRuntime();
        System.out.println(runtime.totalMemory());
        System.out.println(runtime.freeMemory());
        System.out.println(runtime.maxMemory());
        System.out.println(runtime.availableProcessors());   //处理器数
        try {
            //执行一个exe文件
            runtime.exec("notepad");
            runtime.exec("C:\\Program Files\\Microsoft Office\\OFFICE11\\winword.exe c:\\test.doc");
            //执行批处理
            runtime.exec("c:\\x.bat");
            //执行系统命令
            runtime.exec("cmd /c dir ");
            runtime.exec("cmd /c dir c:\\");

//            //-------------- 文件操作 --------------

            runtime.exec("cmd /c copy c:\\x.bat d:\\x.txt");   //copy并改名
            runtime.exec("cmd /c rename d:\\x.txt x.txt.bak"); //重命名
            runtime.exec("cmd /c move d:\\x.txt.bak c:\\");    //移动
            runtime.exec("cmd /c del c:\\x.txt.bak");          //删除

            //-------------- 目录操作 --------------
            runtime.exec("cmd /c md c:\\_test");          //删除
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 执行批处理文件,并获取输出流重新输出到控制台
     */
    public static void dirOpt() {
        System.out.println("------------------dirOpt()--------------------");
        Process process;
        try {
            //执行命令
            process = Runtime.getRuntime().exec("c:\\x.bat");
            //取得命令结果的输出流
            InputStream fis = process.getInputStream();
            //用一个读输出流类去读
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
            String line = null;
            //逐行读取输出到控制台
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

x.bat

del c:\del.txt
cd D:
dir

运行结果:

------------------testWinCmd()--------------------
2031616
1652120
66650112
2
------------------dirOpt()--------------------

D:\_dev_stu\fileopt>del c:\del.txt  

D:\_dev_stu\fileopt>cd D:
D:\_dev_stu\fileopt

D:\_dev_stu\fileopt>dir
驱动器 D 中的卷是 DISK1_VOL2
卷的序列号是 70FB-DFAF

D:\_dev_stu\fileopt 的目录

2008-07-18  09:30    <DIR>          .
2008-07-18  09:30    <DIR>          ..
2008-07-18  09:30    <DIR>          src
2008-07-18  09:31               549 fileopt.iml
2008-07-18  09:31            10,292 fileopt.ipr
2008-07-18  14:27    <DIR>          classes
2008-07-18  16:42            26,265 fileopt.iws
               3 个文件         37,106 字节
               4 个目录  8,095,498,240 可用字节

Process finished with exit code 0
时间: 2024-10-13 01:12:43

Java调用Windows命令的相关文章

Java调用cmd命令 打开一个站点

使用Java程序打开一个站点 近期做了个东西使用SWT技术在一个client程序 须要升级时在提示升级 点击窗口上的一个连接 打开下载网页 花费了我非常长时间 用到了把它记录下来  怕是忘记,须要时能够直接来用到.         try { //不是在Java程序中运行而是在操作系统中运行             Runtime.getRuntime().exec("cmd /c start http://blog.csdn.net/blogluoqi/"); //Runtime.g

java调用windows的wmi获取设备性能数据

java调用windows的wmi获取监控数据(100%纯java调用windows的wmi获取监控数据) 转:http://my.oschina.net/noahxiao/blog/73163 纯java主要体现在可以跨平台调用com.所用的是j-Interop,它是100%纯java实现的com的调用 1.环境准备 a.windows要开启Remote Registry与Windows Management Instrumentation服务 b.修改安全策略 我系统是英文的,如果是中文系统

Java调用Shell命令和脚本

1.介绍 有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本.而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRuntime()给我们提供了以下几种exec()方法: Process exec(String command) 在单独的进程中执行指定的字符串命令. Process exec(String[] cmdarray) 在单独的进程中执行指定命令和变量. Process exec(String[] cmd

Java调用Linux命令执行

调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Runtime类和Process类,其中Runtime类中的Runtime.getRuntime().exec(linux command)方法可以直接执行linux命令,而Process类可以接收Runtime.getRuntime().exec()类的返回值,并提供了waitFor()方法和destr

java使用RunTime调用windows命令行

当Java需要调用windows系统进行交互时,可以使用Runtime进行操作. 例子: 1.调用window中获取关于java相关的进行信息 Runtime rt = Runtime.getRuntime(); Process p = rt.exec("wmic process where caption=\"javaw.exe\" get caption,commandline /value"); BufferedReader br = new Buffered

Java调用本地命令

参考:http://blog.csdn.net/zhu_xun/article/details/19539513 http://www.cnblogs.com/kingcucumber/p/3180146.html 一.Process类 ProcessBuilder.start()创建一个本机进程,并返回一个Process子类的一个实例,该实例可以获取进程的相关信息,也可以控制进程.这个进程没有自己的终端,它的操作结果io都重定向到了它的父进程,父进程通过getInputStream(),get

Java调用Linux命令(cd的处理)

一.Java调用Linux系统的命令非常简单 这是一个非常常用的调用方法示例: 1 public String executeLinuxCmd(String cmd) { 2 System.out.println("got cmd job : " + cmd); 3 Runtime run = Runtime.getRuntime(); 4 try { 5 Process process = run.exec(cmd); 6 InputStream in = process.getIn

Java调用Shell命令和脚本,致力于hadoop/spark集群

前言 说明的是,本博文,是在以下的博文基础上,立足于它们,致力于我的大数据领域! http://kongcodecenter.iteye.com/blog/1231177 http://blog.csdn.net/u010376788/article/details/51337312 http://blog.csdn.net/arkblue/article/details/7897396 第一种:普通做法 首先,编号写WordCount.scala程序. 然后,打成jar包,命名为WC.jar.

转:Java调用CMD命令

java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后关闭命令窗口. cmd /k dir 是执行完dir命令后不关闭命令窗口. cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭. cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭. 可以用cmd /?查看帮助信息. ★CMD命令★ 1. gpedit.msc-----组策略 2. s