论坛首页 入门技术论坛

Java如何调用可执行文件和批处理命令

浏览 10532 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-19  


Java 是种跨平台的语言,我们经常碰到需要通过Java调用windows下某些程序。有些第三方厂商如(ANT),也提供了调用windows下可执行程序的方法,但我们往往需要调用一些批处理命令。而java 却不提供。
    这里,我采用一种变相的调用方法,使得Java 能调用批处理命令。如果您有更好的方法,希望您能告诉我。

前期准备[/B]
    Quick Batch File (De)Compiler
    将任何BAT、CMD批处理脚本编译为EXE文件!

开始
1.    运行exe 文件
Java JDK里已经提供了调用的方法,不在累赘,代码如下。

    try {
        String command = "notepad";
        Process child = Runtime.getRuntime().exec(command);
    } catch (IOException e) {
   
    }
   

2.    运行 bat(批处理) 文件
    Java 对批处理文件还不支持。刚开始一直在研究 Java     如何调用批处理文件,始终找不到解决方法。后来只好绕过批处理,考虑如何将批处理转换为exe可执行文件。然后再通过Java调用可执行文件。

    在Google上搜索一下,找到Quick Batch File (De)Compiler,可以将任何BAT、CMD批处理脚本编译为EXE文件。使用了一下,果然可以。

    Quick Batch File (De)Compiler使用非常简单:
    Quickbfc 文件名.bat 文件名.exe(将批处理命令编译为可执行文件)
    quickbfd 文件名.exe 文件名.bat(将可执行文件反编译为批处理命令)

        然后,我们再按第一种方法通过Java 调用,即可。


   发表时间:2007-12-20  
java不支持调用批处理文件?你用哪个版本的jdk?
0 请登录后投票
   发表时间:2007-12-21  
不直接支持,可是将bat文件转换为exe文件,这样不就支持喽...
0 请登录后投票
   发表时间:2007-12-21  
java支持调用批处理的。。。
Process child = Runtime.getRuntime().exec("xxx.bat");
child.waitFor();
0 请登录后投票
   发表时间:2008-06-05  
ytll21 写道
java支持调用批处理的。。。
Process child = Runtime.getRuntime().exec("xxx.bat");
child.waitFor();

我记得是不支持的吧?什么时候可以支持了?
0 请登录后投票
   发表时间:2008-10-23  
import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
 * 
 */

/**
 * @author cddcdd@
 * 
 */
public class Test {

	/**
	 * 
	 */
	public Test() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Process process;
		try {
			process = Runtime.getRuntime().exec("1.bat");
			BufferedReader read = new BufferedReader(new InputStreamReader(
					process.getInputStream()));
			String str = null;
			while ((str = read.readLine()) != null) {
				System.out.println(str);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
0 请登录后投票
   发表时间:2008-10-23  
cddcdd 写道

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
*
*/

/**
* @author cddcdd@
*
*/
public class Test {

/**
*
*/
public Test() {
// TODO Auto-generated constructor stub
}

/**
* @param args
*/
public static void main(String[] args) {
Process process;
try {
process = Runtime.getRuntime().exec("1.bat");
BufferedReader read = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String str = null;
while ((str = read.readLine()) != null) {
System.out.println(str);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}




可以的呀。我用1.5
0 请登录后投票
   发表时间:2008-11-26  
好贴,学习中,莫大的帮助啊
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics