我们都知道可以用Runtime.exec(“cmd.exe /c servertool”)来执行一条servertool dos下的命令。但是如果这个servertool(JavaIDL中的指令)是一个平台环境,然后我还需要在servertool>....环境下继续输入参数,应该怎么搞?
---------------
说的有点乱。我想做的事情如下:
cmd>servertool -port 1050
//进入servertool环境
servertool>register -server ServerName .... (这个要怎么搞?)
---------------
说的有点乱。我想做的事情如下:
cmd>servertool -port 1050
//进入servertool环境
servertool>register -server ServerName .... (这个要怎么搞?)
而Process对象有三个方法
getInputStream
getOutputStream
getErrorStream
分别可以取得Process的输入、输出、错误输出流
如果你需要向进程写入参数,可以用getOutputStream取得输出流,然后往输出流里写参数。提示:你可以用PrintWriter将这个输出流封装一下,使用println方法来输出 ,会方便得多
回oracs,我的参数可能是动态的,bat好像不能支持动态参数的吧。
回jamesfancy,谢谢你的建议,我试一下!
不过又出现一个新问题:
在执行
servertool>register -server ServerName
和
servertool>list
之间会有一些时间间隔(执行时间),然后我怎样让程序等待register执行完毕之后再执行list?
process.waitFor()肯定不行了。因为register和list是在同一个thread中。
然后command中的start/wait好像是针对的外部应用程序,好像也不可以。
有谁能好的解决方法?PS:jamesfancy的分照常给,如能解决这个新问题,加分!
getInputSteram取的的OutputStream对象应该可以检测输出的。
具体操作你去查一个JavaDoc,这台机器上没得我懒得查了
BAT也支持动态参数的,在BAT时用%1,%2等接收参数,最大%9,如果超出9个参数,就要配合Shift命令使用