java对CMD命令行的操作

迷糊 2007-08-27 10:05:13
我们都知道可以用Runtime.exec(“cmd.exe /c servertool”)来执行一条servertool dos下的命令。但是如果这个servertool(JavaIDL中的指令)是一个平台环境,然后我还需要在servertool>....环境下继续输入参数,应该怎么搞?
---------------
说的有点乱。我想做的事情如下:
cmd>servertool -port 1050
//进入servertool环境
servertool>register -server ServerName .... (这个要怎么搞?)
...全文
374 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷糊 2007-08-28
  • 打赏
  • 举报
回复
谢谢几位!
回oracs,我的参数可能是动态的,bat好像不能支持动态参数的吧。
回jamesfancy,谢谢你的建议,我试一下!
边城狂人 2007-08-28
  • 打赏
  • 举报
回复
RE: bat好像不能支持动态参数的吧。
BAT也支持动态参数的,在BAT时用%1,%2等接收参数,最大%9,如果超出9个参数,就要配合Shift命令使用
边城狂人 2007-08-28
  • 打赏
  • 举报
回复
执行完了有输出吗?你可以检查到有输出的时候再往里写东西。
getInputSteram取的的OutputStream对象应该可以检测输出的。
具体操作你去查一个JavaDoc,这台机器上没得我懒得查了
迷糊 2007-08-28
  • 打赏
  • 举报
回复
谢谢jamesfancy提供的方法。
不过又出现一个新问题:
在执行
servertool>register -server ServerName

servertool>list
之间会有一些时间间隔(执行时间),然后我怎样让程序等待register执行完毕之后再执行list?
process.waitFor()肯定不行了。因为register和list是在同一个thread中。
然后command中的start/wait好像是针对的外部应用程序,好像也不可以。
有谁能好的解决方法?

PS:jamesfancy的分照常给,如能解决这个新问题,加分!
边城狂人 2007-08-27
  • 打赏
  • 举报
回复
Runtime.exec的返回结果是一个Process,
而Process对象有三个方法
getInputStream
getOutputStream
getErrorStream
分别可以取得Process的输入、输出、错误输出流
如果你需要向进程写入参数,可以用getOutputStream取得输出流,然后往输出流里写参数。

提示:你可以用PrintWriter将这个输出流封装一下,使用println方法来输出 ,会方便得多
fkue23 2007-08-27
  • 打赏
  • 举报
回复
写个批处理,调批处理不就得了
不错
oracs 2007-08-27
  • 打赏
  • 举报
回复
写个批处理,调批处理不就得了?
左大神在这 2007-08-27
  • 打赏
  • 举报
回复
up

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧