java调用bat文件,为什么bat必须放在eclipse安装目录下才调得到?高手来看看!

跳蚤图 2012-09-25 03:52:34
List<String> cmdList = new ArrayList<String>();
cmdList.add("D:\\tetetette\\■test.bat");
cmdList.add("5");
cmdList.add("4");
ProcessBuilder pb = new ProcessBuilder(cmdList);
Process p = null;
try {
p = pb.start();
.......

test.bat
echo ■test
call test.exe 5 4


test.bat放在D盘就没有反应,也不报错,也不出结果。
放在eclipse安装目录下就有结果
为什么啊?
...全文
276 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-09-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
p.getErrorStream() java.io.FileInputStream@1521f12
p.getInputStream() java.io.BufferedInputStrea……
[/Quote]

楼主你完全不理解我的意思啊。这样:

定义这个类:
class ProcessorReader extends Thread {
Process proc;

public ProcessorReader(Process proc) {
this.proc = proc;
}

public void run() {
Scanner scStdOut = new Scanner(proc.getInputStream(), "GBK"); // Prepare Scanner for standard's output.
Scanner scErrOut = new Scanner(proc.getInputStream(), "GBK"); // Prepare Scanner for error's output.
while (true) {
if (scStdOut.hasNextLine()) {
System.out.println(scStdOut.nextLine()); // Standard Output Information
} else if (scErrOut.hasNextLine()) {
System.err.println(scErrOut.nextLine()); // Error Information
} else {
try {
Thread.sleep(20); // Nothing to do, sleep a while...
proc.exitValue(); // ThrowIllegalThreadStateException, if the subprocess represented by this Process object has not yet terminated.
break;
} catch (InterruptedException ex) {
ex.printStackTrace();
} catch (IllegalThreadStateException ex) {
// Process still alive
}
}
}
}
}


然后这样调用下(增加红色字体这几句话):
ProcessBuilder pb = new ProcessBuilder(cmdList);
Process p = null;
try {
p = pb.start();
ProcessorReader procReader = new ProcessorReader(proc);
procReader.start(); // Start the thread for reading process' output


然后看看有什么信息没有。
跳蚤图 2012-09-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

操作系统环境编变量PATH的设置
[/Quote]
能详细说一下吗
跳蚤图 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

操作系统环境编变量PATH的设置
[/Quote]
这里是Path的值,有没有配的不对的地方啊

D:\oracle\product\10.2.0\client_1\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre7\bin;D:\Program Files\TortoiseSVN\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM
跳蚤图 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

楼主这种问题,与其这里问,不如把 p.getErrorStream() 和 p.getInputStream() 的信息输出来看看,是否有什么错误提示信息。
[/Quote]
p.getErrorStream() java.io.FileInputStream@1521f12
p.getInputStream() java.io.BufferedInputStream@c8d800

java.io.BufferedInputStream@c8d800里没数据
跳蚤图 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

打印下它的绝对路径,看看两者有什么区别
[/Quote]
■test.bat的绝对路径么?

  • 打赏
  • 举报
回复
打印下它的绝对路径,看看两者有什么区别
MiceRice 2012-09-25
  • 打赏
  • 举报
回复
楼主这种问题,与其这里问,不如把 p.getErrorStream() 和 p.getInputStream() 的信息输出来看看,是否有什么错误提示信息。
hexg1 2012-09-25
  • 打赏
  • 举报
回复
没有道理的,应该你的路径写反了,用//,不要用\\
  • 打赏
  • 举报
回复
操作系统环境编变量PATH的设置

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧