2014-09-24 87 views
0

我需要以编程方式打开控制台(在Windows中),然后从那里我需要在刚创建的控制台中执行一个较大的命令。我试图写入输出流,但没有运气。这是我迄今为止提出的控制台的代码。Java:以编程方式打开控制台并从中执行命令

File fileOne = new File(args[0]);  

String[] command = { "cmd", "/c", "Start"}; 
ProcessBuilder procBuilder = new ProcessBuilder(command); 
procBuilder.directory(fileOne); 

回答

1

这里是我用来创建一个程序的启动图标的例子。

Runtime rt = Runtime.getRuntime(); 
    rt.exec("cmd.exe /c cd \""+"c:\\CombineImages\\"+"\" & start cmd.exe /k \"java -Xms1G -Xmx1G jar CombineImages.jar\""); 

将该代码放入您的主要方法中,并替换为您想要运行的任何命令。

+0

这适用于我启动命令窗口并通过打开的命令提示符执行命令。 – brso05 2014-09-24 15:19:25

+0

这对我工作谢谢你! – Katianie 2014-09-24 15:34:02

+0

欢迎您的光临,我可以帮助您! – brso05 2014-09-24 15:34:57

1

这应该工作

你需要像

String[] command = 
{ 
    "cmd", 
}; 
Process p = Runtime.getRuntime().exec(command); 
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start(); 
new Thread(new SyncPipe(p.getInputStream(), System.out)).start(); 
PrintWriter stdin = new PrintWriter(p.getOutputStream()); 
stdin.println("dir c:\\ /A /Q"); 
// write any other commands you want here 
stdin.close(); 
int returnCode = p.waitFor(); 
System.out.println("Return code = " + returnCode); 

SyncPipe类:

class SyncPipe implements Runnable 
{ 
public SyncPipe(InputStream istrm, OutputStream ostrm) { 
     istrm_ = istrm; 
     ostrm_ = ostrm; 
    } 
    public void run() { 
     try 
     { 
      final byte[] buffer = new byte[1024]; 
      for (int length = 0; (length = istrm_.read(buffer)) != -1;) 
      { 
       ostrm_.write(buffer, 0, length); 
      } 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    private final OutputStream ostrm_; 
    private final InputStream istrm_; 
} 
+0

这是一个非常有用的答案感谢您张贴它。另一个答案适用于我,但这也是一个很好的探索途径。再次感谢您花时间帮助。 – Katianie 2014-09-24 15:35:02