1

我找到了这个主题,但代码对我不起作用...从 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-input 的项目,所以请不要因为我犯的愚蠢错误而生气。;)

谢谢

4

3 回答 3

3

如果我跑

 ipconfig ""

我明白了

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

您只能从 Java 运行在命令行上运行的命令。

BTW:如果你正在寻找错误,你需要阅读错误流。

于 2012-08-02T15:34:32.463 回答
3

尝试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方法。

于 2012-08-02T15:46:15.217 回答
1

我会Runtime.getRuntime().exec(new String[] {"ipconfig > temp.txt"});然后将其作为文本文件使用BufferedReader.

我希望这有帮助。

于 2012-08-02T15:35:31.793 回答