Java执行cmd命令 netstat -n ,java -version等命令 要等很久才能输出信息

时间:2022-09-02 15:55:55
Window下 :Java执行cmd命令 netstat -n ,java -version等命令 要等很久才能输出信息   而Java -version ipconfig这些则不需要等待
 而且  ping命令、tracert命令用不了
代码如下:
public class test {
public static void main(String[] args) {
Process p=null;
Runtime r=Runtime.getRuntime();
while(true){
String command=null;
Scanner s=new Scanner(System.in);
command=s.next();
SequenceInputStream out=null;
BufferedReader writer=null;
try {
p=r.exec(command);
out=new SequenceInputStream(p.getInputStream(),p.getErrorStream());
    writer=new BufferedReader(new InputStreamReader(out));
//if(p.waitFor()==0){
String temp=null;
while((temp=writer.readLine())!=null){
System.out.println(temp);
}
writer.close();
out.close();
writer=null;
out=null;
p.destroy ();
p.destroy();
//}
p.waitFor();

} catch (Exception e) {
e.printStackTrace();
}finally{
if(p!=null)
p.destroy ();
p=null;
if(writer!=null){
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
writer=null;
}
if(out!=null){
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out=null;
}
}
}
}
}

3 个解决方案

#1


这样的问题不是什么限制导致的,而是路径的问题,这时我们打开c:\windows\system32目录下,运行ping命令,发现在这里可以使用ping命令,可以说明是找不到路径的原因,这时可以修改一个环境变量,方法:打开“我的电脑”“属性”“高级”选项卡,新建“环境变量”到“系统变量”添加PATH,将PATH的值设为c:\windows\system32。

  再进入运行里输入CMD后输入ping发现可以用了,OK!

#2


并不是  我是要在Java上执行cmd命令   并不是执行cmd.exe

#3


java里执行ping是可以的,我有程序用,速度也没什么问题,不知道你的问题在哪里....................

#1


这样的问题不是什么限制导致的,而是路径的问题,这时我们打开c:\windows\system32目录下,运行ping命令,发现在这里可以使用ping命令,可以说明是找不到路径的原因,这时可以修改一个环境变量,方法:打开“我的电脑”“属性”“高级”选项卡,新建“环境变量”到“系统变量”添加PATH,将PATH的值设为c:\windows\system32。

  再进入运行里输入CMD后输入ping发现可以用了,OK!

#2


并不是  我是要在Java上执行cmd命令   并不是执行cmd.exe

#3


java里执行ping是可以的,我有程序用,速度也没什么问题,不知道你的问题在哪里....................