1

このトピックを見つけましたが、コードが機能しません... Java から Windows コマンド テキストを返しますか?

ボタンを押した後、バッチファイルを実行したいのですが、テスト目的では、それは単なる ipconfig-command です。

cmd-output は 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 からのみ実行できます。

ところで: エラーを探している場合は、エラー ストリームを読み取る必要があります。

于 2012-08-02T15:34:32.463 に答える
3

execString パラメーターのみを受け取るコマンドを試してください。次のテスト コードは私のシステムで動作しました (ただし、テキスト フィールドではなく、コンソールにのみ出力していました)。

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 に答える