如何在java中指定的文件夹中运行Windows命令(cmd)
问题描述:
好日子,我感谢谁可以提前帮助我。如何在java中指定的文件夹中运行Windows命令(cmd)
我需要运行一个命令来读取包含程序输入数据的文件,它将返回一个带有输出数据的文件。
标准:
-
我必须找到自己的文件夹中哪里是软件的可执行文件,然后我写了下面的命令:
swmm5 prueba1.inp prueba1.rpt prueba1.out
如果我在cmd中运行它,它会生成输出文件:
- swmm5是可执行文件
- test1.inp是与输入数据的文件
- test1.rpt是输出数据文件(当我运行命令创建了该文件)
- test1.out是与输出数据文件(当我运行命令创建该文件)
我试图使用的代码是这样的,虽然它不产生错误,它并不成功运行上面的命令行,因为它不会生成输出文件。我也试图与String
是在评论//(COMANDO)
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class OptimizarSWMM {
public static void main(String[] args) {
Runtime cmd = Runtime.getRuntime();
Process proceso;
String[] directorio = new String[4];
directorio[0] = "cmd.exe";
directorio[1] = "/C";
directorio[2] = "C:\\Users\\milton\\Desktop\\EPA_SWMM_5.1";
directorio[3] = "swmm5 prueba1.inp prueba1.rpt prueba1.out";
//String comando = "cmd /C C:\\Users\\milton\\Desktop\\EPA_SWMM_5.1 swmm5 prueba1.inp prueba1.rpt prueba1.out";
try {
proceso = cmd.exec(directorio);
//proceso = cmd.exec(comando);
} catch (IOException ex) {
Logger.getLogger(OptimizarSWMM.class.getName()).log(Level.SEVERE,null, ex);
}
}
}
答
我可以这样解决这个问题:
"cmd.exe", "/c", "cd \"C:\\Users\\milton\\Desktop\\EPA_SWMM_5.1\" && swmm5 prueba1.inp prueba1.rpt prueba1.out"
这是代码:
public static void main(String[] args) throws IOException {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "cd \"C:\\Users\\milton\\Desktop\\EPA_SWMM_5.1\" && swmm5 prueba1.inp prueba1.rpt prueba1.out");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
System.out.println(line);
}
}
我建议至少获取并读取Process – copeg
的错误流使用ProcessBulder,它允许指定执行该命令的目录 – MadProgrammer