首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我将参数传递给beyond compare时,ProcessBuilder不工作

当我将参数传递给beyond compare时,ProcessBuilder不工作
EN

Stack Overflow用户
提问于 2016-04-20 21:09:24
回答 2查看 205关注 0票数 1

当我尝试执行超越比较exe。

我无法传递左侧和右侧文件的参数

代码语言:javascript
复制
public static void exceutecmd() throws ServletException, IOException {
    boolean is64bit = false;

    if (System.getProperty("os.name").contains("Windows")) {
        is64bit = (System.getenv("ProgramFiles(x86)") != null);
    } else {
        is64bit = (System.getProperty("os.arch").indexOf("64") != -1);
    }

    String bin = "C:\\Optum Symmetry Suite\\Symmetry 9.1\\bin";
    String File1 = " C:\\Optum Symmetry Suite\\Symmetry 9.1\\bin\\1.TXT";
    String File2 = " C:\\Optum Symmetry Suite\\Symmetry 9.1\\bin\\2.TXT";

    System.out.println(bin);
    String exe = bin;
    //String configfile = defaultsvaluesSym.get("xml file path");
    //System.out.println(configfile);
    StringBuilder sbd = new StringBuilder();
    if (is64bit) {
        exe = File.separator + "/BC2.exe";
    } else {
        exe = File.separator + "/BC2.exe";
    }

    ****ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "cd \""
            + bin + "\" && \"" + bin + exe +"\"",File1,File2);****

    builder.redirectErrorStream(true);
    Process p = null;
    try {
        p = builder.start();
    } catch (IOException e) {

        e.printStackTrace();
    }
    BufferedReader r = new BufferedReader(new InputStreamReader(
            p.getInputStream()));
    String line = null;
    while (true) {
        try {
            line = r.readLine();
            sbd.append(line);
        } catch (IOException e) {

            e.printStackTrace();
        }
        if (line == null) {
            break;  
        }
    }
    System.out.println(sbd.toString());

}

我可以执行超越比较exe,但不能传递参数。

请帮我解决这个问题

EN

回答 2

Stack Overflow用户

发布于 2016-04-20 23:01:44

删除命令中的"cd“部分。您正在使用完整路径调用您的程序,并为参数传递完整路径。

代码语言:javascript
复制
exe = File.separator + "/BC2.exe";

不需要字符'/‘,因为您已经添加了File.separator。

票数 2
EN

Stack Overflow用户

发布于 2016-04-21 13:58:15

public void exceutecmd(HttpServletRequest request,HttpServletResponse response,String fileName1,String fileName2)抛出ServletException,IOException { boolean is64bit = false;if void{ is64bit = (System.getenv("ProgramFiles(x86)") != null);} else { is64bit = (System.getProperty("os.arch").indexOf("64") != -1);}

代码语言:javascript
复制
    String bin = "C:\\Optum Symmetry Suite\\Symmetry 9.1\\bin";

    System.out.println(bin);
    String exe = bin;
    // String configfile = defaultsvaluesSym.get("xml file path");
    // System.out.println(configfile);
    StringBuilder sbd = new StringBuilder();
    if (is64bit) {
        exe = File.separator + "BC2";
    } else {
        exe = File.separator + "/BC2.exe";
    }

    /*ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "cd \""
            + bin + "\" && \"" + bin + exe + "\"");*/

    ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "cd \""
            + bin + "\" && \"" + bin + exe + "\""+" \""+fileName1+"\""+" \""+fileName2+"\"");
    builder.redirectErrorStream(true);
    Process p = null;
    try {
        p = builder.start();
    } catch (IOException e) {

        e.printStackTrace();
    }
    BufferedReader r = new BufferedReader(new InputStreamReader(
            p.getInputStream()));
    String line = null;
    while (true) {
        try {
            line = r.readLine();
            sbd.append(line);
        } catch (IOException e) {

            e.printStackTrace();
        }
        if (line == null) {
            break;
        }
    }
    System.out.println(sbd.toString());
    /*
     * RequestDispatcher rd =
     * request.getRequestDispatcher("runAccGrouper.jsp");
     * rd.forward(request, response);
     */
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36744880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档