这个程序可以正常执行,但是脚本里的zip命令没有执行,也没有任何日志,不解。2.cmd如下:@echo off
echo zip -q -r ..\..\download\eac.zip G:\down\ms>>oper.log
zip -q -r ..\..\download\eac.zip G:\down\ms>>oper.log
echo 0
@echo on/**
 * 执行脚本并返回执行结果
 * @param shell
 * @return 0:正常完成,1:执行失败, -1:未知状态
 */
static private int exeScript(File shell){
int state = 1;
Runtime run = null;
Process proc = null;
InputStream in = null;
int echo = 0;

try {
run = Runtime.getRuntime();
proc = run.exec(shell.getAbsolutePath());
in = proc.getInputStream();
proc.waitFor();

switch(echo = in.read()){
case '0':
state = 0;
break;
case '1':
state = 1;
break;
default:
state = -1;
}

if(null != in) in.close();
} catch (Exception e) {

state = 1;
}

return state;
}static void t2(){
File file = new File("D:\\test\\2.cmd");
int done = exeScript(file);

System.out.println("完成? " + done);
}

解决方案 »

  1.   

    e...同样的 东西 放到linux下 就没事了? 难道和windows有关?
      

  2.   

    windows下管道符用 > 吧?
    如:
    tree /f > D:\1.txt
      

  3.   

    '>' 覆盖方式
    '>>' 追加方式
      

  4.   

    在程序中打印一下proc.getErrorputStream()的信息,看看有什么错误发生
      

  5.   

    或者把错误输出也重定向到文件
    @echo off
    echo zip -q -r ..\..\download\eac.zip G:\down\ms>>oper.log 2>&1
    zip -q -r ..\..\download\eac.zip G:\down\ms>>oper.log 2>&1
    echo 0
    @echo on
      

  6.   

    dos命令只是在windows里面用,Linux里面怎么调cmd?如果cmd单独执行没问题,在java里面try catch看有什么异常