从java传递参数到批处理但没有结果

时间:2012-07-11 09:24:57

标签: java batch-file bazaar

我正在尝试将版本控制添加到我的Web服务器(在Windows上,我知道......)我需要使用批处理脚本来执行自动添加和提交。这就是我现在所拥有的:

public static void bzr_add(String path, String commit) throws IOException {
    ProcessBuilder pb = new ProcessBuilder(scripts + "bzr_add.bat", storage, path, "\"" + commit + "\"");
    Process p = pb.start();
    String line;
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
    while ((line = r.readLine()) != null) {
        System.out.println(line);
    }
    r.close();
    try {
        p.waitFor();
    } catch (InterruptedException ex) {
        Logger.getLogger(local.class.getName()).log(Level.SEVERE, null, ex);
    }
}

“脚本”是可以找到脚本的目录,“存储”存储目录,“路径”是新文件的路径。

批处理脚本:

cd %1
bzr add %2
bzr commit -m %3

我得到了什么:

Infos: C:\Program Files\glassfish-3.1.2\glassfish\domains\domain1>cd c:\storage_dir\ 
Infos: C:\storage_dir>bzr add dir\file.ext 
Infos: C:\storage_dir>bzr commit -m "commit_message"

所以看起来没问题,当我在cmd shell中复制它时它可以工作(当我在shell中执行bzr_add.bat par1 par2 par3时它也可以工作)。如果我修改脚本以创建新文件,则会在正确的目录中创建它们,以便正确执行某些操作。

但是当我通过java执行脚本,任何猜测时,集市似乎都不同意这个?

1 个答案:

答案 0 :(得分:1)

我找到了自己问题的解决方案(虽然我不知道为什么我需要这样做)。

我必须将此行添加到我的批处理文件中:

path = %PATH%;c:\Program Files\Bazaar\

这很奇怪,因为当我使用cmd.exe时它已经在路径中了,但它的工作原理是这样的。 也许它会帮助有同样问题的人。