——
http://lavasoft.blog.51cto.com/62575/88507
Java调用Windows命令主要用到两个类:
java.lang.Runtime
每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。
java.lang.Process
ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。 对于带有 Process 对象的 Java 进程,没有必要异步或并发执行由 Process 对象表示的进程。
下面是个简单例子:
package com.lavasoft;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class TestCmd {
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
附:打开一个不可执行的文件,但该文件存在关联的应用程序,则可以有两种方式。 以打开一个word文档a.doc文件为例:
exec("start .\\a.doc");
exec("c:\\Program Files\\Microsoft Office\\office\\winword.exe .\\a.doc");
显然,前一种方法更为简捷方便。
分享到:
相关推荐
java使用windows命令行获取返回内容
NULL 博文链接:https://913.iteye.com/blog/1485809
NULL 博文链接:https://thinktothings.iteye.com/blog/1435296
java 操作windows 共享目录方法介绍
java调用执行系统命令的工作类。包括在Linux和windows系统,已经系统错误输出流的监控。
进程可根据该pid调用exec自杀 注意事项:不能改变PidTool.java所在的包,否则需要重行生成dll。 编译命令中 "-PidTool.dll" 改为 "-FePidTool.dll",我整漏了! 使用方法: 1.javac PidTool.java 2.javah -jni ...
用java语言实现windows dos的调用,通过输入dos命令,执行相应的结果
java调用cmd命令实现访问windows共享目录(需不需要密码均可),然后根据指定文件路径下载文件到我们自己配置的本地目录,main函数为测试代码
java ping ip ping命令 ping工具类 支持linux和windows等所有平台 Ping是Windows下的一个命令 在Unix和Linux下也有这个命令。 ping也属于一个通信协议,是TCP/IP协议的一部分 利用“ping”命令可以检查网络是否连通...
java类获取网络时间操作cmd命令(打成jar包了,就一个sysTimeTest类,30行代码用反编译工具一看就懂,网上也有很多例子)。然后打成jar包,windows批处理操作,单次同步更新windows系统时间,每天定时同步更新windows...
1、通过java调用Python命令执行datax任务调度 2、自动开始任务和调度结束关闭任务调度释放内存 3、如果我们在cmd使用命令调度,执行完毕后无法释放内存,会造成内存泄露不足,出现报错“Error occurred during ...
java调用操作系统命令源码工具类,包含远程输入用户名和密码方式及本地调用,同时兼容处理了Windows及Linux命令和执行结果的返回。使用者可以通过工具类方法直接调用,传入操作系统的命令即可执行,方法返回操作结果...
主要介绍了Java调用Windows的DOS命令的方法,其主要内容思路是实现调用Windows的ipconfig命令,然后将输出的信息通过IO流输出到控制台。有需要的小伙伴参考下
java 1. 使用wmic相关命令获取windows硬件相关信息。 2. 使用shell相关的dmidecode/fdisk/ifconfig命令获取Linux硬件和系统相关信息
以下代码在windows2000上可以运新哦。 SayHi.exe为任意的一个执行程序。
windows下使用测试网络环境工具jperf 首先需要在电脑上安装java开发环境
主要介绍了java执行bat命令碰到的阻塞问题的解决方法,有需要的朋友可以参考一下
NULL 博文链接:https://jisonami.iteye.com/blog/2181810