2015-04-12 86 views
0

好日子,我感谢谁可以提前帮助我。如何在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); 
     } 

    } 

} 
+0

我建议至少获取并读取Process – copeg

+0

的错误流使用ProcessBulder,它允许指定执行该命令的目录 – MadProgrammer

回答

0

我可以这样解决这个问题:

"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); 
     } 

    } 
相关问题