Discussion:
[問題] DOS視窗顯示的訊息
(时间太久无法回复)
sheepu
2006-11-24 20:59:58 UTC
Permalink
請問...JAVA裡面 有沒有什麼辦法可以把dos視窗裡顯示的訊息

存到一個字串變數裡呢?


ex.
SString result = "";
String cmd = "cmd.exe /c start ping xx.xx.xx.xx";
Process ps = Runtime.getRuntime().exec(cmd);

之後他會開一個新dos視窗去顯示PING的結果

顯示結果當然會出現 "Reply from xx.xx.x.xx: bytes = 32...." 等等

要怎麼把這些顯示結果 存到一個result這個變數裡呢?


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.22.18.92
※ 編輯: newpuli 來自: 163.22.18.92 (11/25 12:59)
好累想睡覺
2006-11-24 22:55:57 UTC
Permalink
※ 引述《newpuli (sheepu)》之銘言:
: 請問...JAVA裡面 有沒有什麼辦法可以把dos視窗裡顯示的訊息
: 存到一個字串變數裡呢?
: ex.
: SString result = "";
^^^^^^^^^^^^^^^^^^^^^^^
我猜你這邊應該是多打一個 S 吧 (因為API裡面查不到 == ==|||)
: String cmd = "cmd.exe /c start ping xx.xx.xx.xx";
: Process ps = Runtime.getRuntime().exec(cmd);
: 之後他會開一個新dos視窗去顯示PING的結果
: 顯示結果當然會出現 "Reply from xx.xx.x.xx: bytes = 32...." 等等
: 要怎麼把這些顯示結果 存到一個result這個變數裡呢?
恩...因為之前剛好有研究一下 exec() 的用法

在 JavaWorld 裡面有一篇文章提到你要的功能 連結如下 :
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=3

依照上面範例 MediocreExecJavac.java 所說的...

利用抓出 Process 內的函式 getInputStream() 將其內部的資料儲存即可

不過我在測試你下的指令的時後 程式會額外多開一個視窗

執行完後 InputStream 好像也沒抓到東西 (這邊我不是很確定 你可以在試試看)

於是我把下的指令改成 String cmd = "ping xx.xx.xx.xx" ;

後來就可以抓到了.... 以下是我改出來的部分程式碼

String result = "";
String cmd = "ping www.yahoo.com.tw";

try
{
Process ps = Runtime.getRuntime().exec(cmd);
InputStreamReader isr = new InputStreamReader(ps.getInputStream());
BufferedReader br = new BufferedReader(isr);

String line = null ;

while ( (line = br.readLine()) != null)
result = result + line ;
ps.waitFor() ;

System.out.println("收到 : " + result) ;
}
catch(Exception e) {}

抓出來的結果如下所示 :
收到 : Pinging rc.tpe.yahoo.com [202.43.195.13] with 32 bytes of data:Reply
from
202.43.195.13: bytes=32 time=5ms TTL=239Reply from 202.43.195.13: bytes=32
time
=6ms TTL=239Reply from 202.43.195.13: bytes=32 time=5ms TTL=239Reply from
202.43
195.13: bytes=32 time=6ms TTL=239Ping statistics for 202.43.195.13:
Packets:
Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in
mill
i-seconds: Minimum = 5ms, Maximum = 6ms, Average = 5ms

資訊有點亂...這部分可能要麻煩你做一下切割了~~~

大致上是這樣吧.....

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.118.131

继续阅读narkive:
Loading...