cmd窗口问题。

fantasyfans1 2009-12-16 02:23:45
我写了一段程序大概意思就是去运行一个。class文件,是调用cmd指令java去运行的。
pro = runtime.exec("cmd.exe /k start java -classpath "+a+" Java23");
结果是会弹出Dos的窗口,但是一下就闪没有了。虽然那上面显示了输出的结果。
谁知道怎么可以让那个Dos的窗口一直不关闭。

我自己手动输入cmd指令去运行那窗口也不会关闭啊,这是为什么!!!
别告诉我把start去掉,我需要弹出窗口显示结果!谢谢!
...全文
273 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazylaa 2009-12-23
  • 打赏
  • 举报
回复
jf
fantasyfans1 2009-12-23
  • 打赏
  • 举报
回复
谢谢大家,来结贴了。
  • 打赏
  • 举报
回复
1楼


14楼

都行
b11ght 2009-12-17
  • 打赏
  • 举报
回复
我前面都说了嘛,就是用FileStream动态生成一个Bat文件,在Bat文件后面加个Pause指令,然后再在java中调用他。
Aniao 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sunwch 的回复:]
启动一个控制台命令:
Runtime runs = Runtime.getRuntime();
runs.exec("cmd.exe /c start cmd");
[/Quote]

学习了,测试通过,这个方法太好了
shine333 2009-12-16
  • 打赏
  • 举报
回复
一个简单,但是不是很推荐的方法,使用命令行管道的方式(不过最后会报一个无关紧要的错)

runtime.exec("cmd.exe /k pause | java ........");

wenjjing2lianee 2009-12-16
  • 打赏
  • 举报
回复
写错了,应该是字节流,而不是返回值
wenjjing2lianee 2009-12-16
  • 打赏
  • 举报
回复
获取执行的返回值:
String command = "cmd.exe /k start java -classpath "+a+" Java23";
Process process = Runtime.getRuntime().exec(command);
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null){
if(sb != null && sb.length() > 0){
sb.append("\n");
}
if(sb.length() > 1024){
sb = new StringBuffer();
}
sb.append(line);
}
System.out.println(sb.toString());
input.close();
ir.close();
process.destroy();
hugogoo 2009-12-16
  • 打赏
  • 举报
回复
顶一去去去。
zl3450341 2009-12-16
  • 打赏
  • 举报
回复
启动一个控制台命令: 
Runtime runs = Runtime.getRuntime();
runs.exec("cmd.exe /c start cmd");
sunwch 2009-12-16
  • 打赏
  • 举报
回复
启动一个控制台命令:
Runtime runs = Runtime.getRuntime();
runs.exec("cmd.exe /c start cmd");
fengkex 2009-12-16
  • 打赏
  • 举报
回复
...
Aniao 2009-12-16
  • 打赏
  • 举报
回复
File file = new File("c:/go.bat");
file.createNewFile();
FileUtils.writeStringToFile(file, "bat文件的内容"); //利用commons-io包里的FileUtils类输出文本到新建立的bat文件

在这里执行bat文件


file.delete();
Aniao 2009-12-16
  • 打赏
  • 举报
回复
差了Runtime的API,发现虽然能以命令数组输入,但是不是你希望的意思,命令数组是用来分辨参数的。

当然可以,有个笨办法

就是把BAT的文件输出到一个bat文件里,然后再运行,接着再删掉BAT文件
fantasyfans1 2009-12-16
  • 打赏
  • 举报
回复
可不可以动态的建立一个。bat而不需要自己去新建一个。。。我的意思是在java中写代码建立。bat。。
fantasyfans1 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 aniao 的回复:]
pro = runtime.exec("c:/go.bat "+a+" Java23");


go.bat的内容:
Java codejava-classpath%1%2
pause

那个%1代表运行BAT时输入的第一个参数,%2代表第二个


[/Quote]


你的方法可以,但是是针对了特定的一个。class。。我现在就想对于任何只知道路径的。class都可以运行怎么办啊。总不可能要去人工去。bat中写n次java。。吧。
Aniao 2009-12-16
  • 打赏
  • 举报
回复
必须在BAT里加PAUSE,因为跟运行JAVA的"java"命令是两条命令
Aniao 2009-12-16
  • 打赏
  • 举报
回复
pro = runtime.exec("c:/go.bat "+a+" Java23");


go.bat的内容:
java -classpath %1 %2
pause


那个%1代表运行BAT时输入的第一个参数,%2代表第二个

fantasyfans1 2009-12-16
  • 打赏
  • 举报
回复
顶上去。
b11ght 2009-12-16
  • 打赏
  • 举报
回复
那你就把你要执行的指令写入到bat文件,最后在追加pause,虽然有点麻烦,但感觉只能这样了 呵呵,等待高手。。。。
加载更多回复(3)

62,614

社区成员

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

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