2012-08-02 79 views
1

我发现这个话题,但代码不为我工作... Return Windows cmd text from Java?的Windows CMD输出(爪哇)

按下一个按钮,我想执行一个批处理文件,用于测试目的后它只是ipconfig-command。

cmd的输出应写入到JTextFiled,但我得到的是没有文字......

这里它写入JTextField中的代码:

btnLock.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     {  
      String g = ""; 
      try { 
       Runtime.getRuntime().exec(new String[] {"ipconfig", g}); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      Process p = null; 
      try { 
       p = Runtime.getRuntime().exec(new String[] {"ipconfig", g}); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      InputStream s = p.getInputStream(); 

      BufferedReader in = new BufferedReader(new InputStreamReader(s)); 
      String temp; 

      try { 
       while ((temp = in.readLine()) != null) 
       { 
        System.out.println(temp); 
       } 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
     } 

    }); 
    btnLock.setBounds(10, 68, 89, 23); 
    contentPane.add(btnLock); 

所以我做什么做错了?

这是我第一个使用cmd输入的项目,所以请不要因为我犯的愚蠢错误而生气。 ;)

THX

回答

3

试试仅接受String参数的exec命令。下面的测试代码工作在我的系统(虽然我只是打印到控制台,而不是文本框):

BufferedReader in = null; 
try{ 
    Process p = Runtime.getRuntime().exec("ipconfig"); 
    InputStream s = p.getInputStream(); 

    in = new BufferedReader(new InputStreamReader(s)); 
    String temp; 

    while ((temp = in.readLine()) != null) { 
     System.out.println(temp); 
    } 
} catch (Exception e){ 
    e.printStackTrace(); 
} finally { 
    if (in != null) in.close(); 
} 

而且你在原来的职位代码也使用System.out.println。据我所知,你不能使用System.out.println打印到JTextField ....你必须使用setText方法。

+0

好吧,它与非gui应用程序正常工作。但如果我尝试用我的GUI(和一个JTextArea)输出只是最后一行... – user1318160 2012-08-02 20:55:55

+0

嗯。这是在一个while循环。你会想要做一些像'String outpt =“”; while((temp = ...)){outpt + = temp +“\ n”; } textField.setText(outpt);' – 2012-08-02 21:01:28

+1

好吧,它适用于textArea.append(temp); – user1318160 2012-08-02 21:01:42

3

如果我运行

ipconfig "" 

我得到

** Error: unrecognized or incomplete command line.** 

您只能从Java运行时,命令在命令行上工作。

顺便说一句:如果你正在寻找错误,你需要阅读错误流。

+0

Jep,你也应该从错误流中读取。 – 2012-08-02 15:37:39

+0

Thx,我是Java新手,请原谅,但是“在命令行上工作的命令”是什么意思?为什么ipconfig不能在命令行上工作? – user1318160 2012-08-02 16:36:28

+0

明确地说,'ipconfig“”'在命令行上不起作用。 'ipconfig'呢。 – 2012-08-02 16:37:30

1

我会Runtime.getRuntime().exec(new String[] {"ipconfig > temp.txt"});,然后用BufferedReader作为文本文件来阅读它。

我希望这会有所帮助。

+0

你有整个代码吗?我试图做到这一点,但我只得到:错误:无法识别或不完整的命令行。 – user1318160 2012-08-02 16:34:46

+0

好吧,我使用了冰冻豌豆解决方案的Roddy,完美无缺地工作。 – user1318160 2012-08-02 21:49:52