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

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

2023年7月13日发(作者:)

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

 篇一

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 = time().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 调用,即可。

 篇二 由于java 是跨平台的,有时候我们需要用到操作系统的一些信息,为了方便期间,干脆就直接调用操作系统的命令来实现,比如查看IP地址,MAC地址等。不过两个在jdk6里面已经有了,不过以前都是用调用dos命令,然后获取输出的办法来做的,比如:

完整代码:

Java代码

package cmd;

import edReader;

import tream;

import treamReader;

class StreamDrainer implements Runnable {

private InputStream ins;

public StreamDrainer(InputStream ins) {

= ins;

}

public void run() {

try {

BufferedReader reader = new BufferedReader(

new InputStreamReader(ins));

String line = null;

while ((line = ne()) != null) {

n(line);

}

} catch (Exception e) {

tackTrace();

}

}

}

public class TestRunCmd {

public static void main(String[] args) {

String[] cmd = new String[] { "", "/C", "wmic process get name" };

try {

Process process = time().exec(cmd);

new Thread(new StreamDrainer(utStream())).start();

new Thread(new StreamDrainer(orStream())).start();

putStream().close();

int exitValue = r();

n("返回值:" + exitValue);

} catch (Exception e) {

tackTrace();

}

}

}

 篇三

本人在项目中遇到这样一个问题,要使用java来调用本地应用程序执行某些操作,例如执行isql命令,来kill掉数据库中的某些进程,这些是数据库本身的命令,很多jdbc根本不支持这些命令,所以不得不使用调用本地应用程序来执行这些命令。

java 中Runtime类是可以调用本地应用程序的可以通过time()来得到Runtime实例,然后执行exec方法来调用本地应用程序,Runtime类中有很多exec方法,参数不同,但是最后都会调用exec(String[] cmdarray, String[] envp, File dir) 这个方法,

其中cmdarray是要执行的本地命令集合,envp是环境变量,dir是exec返回的Process的工作目录。

比较容易出错的地方是环境变量的设置,如果envp is null,那么它会集成它的父进程的环境变量,如果不知道怎么设环境变量,这通常是一个好的选择,如果环境变量设置不当很有可能找不到dll或其他东西而是本地应用程序执行失败,一般会报这样的异常

> ption: CreateProcess: yourcmd error=2

> at (Native Method)

> at

> 32Process.(:63)

> at ternal(Native Method)

> at (:566)

> at (:428)

> at (:364)

> at (:326)

error =2表示filenotfound

Java代码

public void testProcess()

{

try

{

String home="e:/process";

String command = "D:/Sybase/bin/isql -Uuser -Pyourpwd -SserverName -";

File dir = new File(home);

Process p = time().exec(command, null, dir);

StringBuffer strOutput = new StringBuffer();

BufferedReader in = new BufferedReader(new

InputStreamReader(utStream()));

String strProc;

while((strProc = ne()) != null)

{

(strProc+"n");

}

("output is "+ng());

}

catch(IOException e)

{

("IOException ", e);

}

}

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689199821a219966.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信