当我尝试执行超越比较exe。
我无法传递左侧和右侧文件的参数
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,但不能传递参数。
请帮我解决这个问题
发布于 2016-04-20 23:01:44
删除命令中的"cd“部分。您正在使用完整路径调用您的程序,并为参数传递完整路径。
exe = File.separator + "/BC2.exe";不需要字符'/‘,因为您已经添加了File.separator。
发布于 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);}
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);
*/
}https://stackoverflow.com/questions/36744880
复制相似问题