关于Java无法读取以管理员方式运行的bat文件的执行结果

1.我创建了一个默认以管理员身份执行的bat文件

img

2.该cmd命令正常在cmd里执行的输出结果

img

3.我再用java程序执行bat文件

用的是下列方法

img

4.执行结果

(1) 执行bat文件(已经保证bat文件执行成功)

img

(2) 执行正常的cmd命令(将此cmd命令写入bat文件中再执行也能够正常读取)

img

请问有什么解决方案

bat文件内容呢,放出来看看,它正常应该输出什么结果吗,如果本来就不输出结果当然读不出来
如果它会print结果,那你也要把输入输出重定向到管道,才能读取

  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:解决Java的Process读取命令行输出乱码问题
  • 除此之外, 这篇博客: 计算机操作系统 --- 四种调度算法java篇中的 进程Process类 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • // 创建进程
    class Process{
        private String name;  // 进程名
        private int arriveTime;  // 到达时间
        private int runtimeLength;  // 执行长度
        private static int count = 0;  // 进程数目
    
        public Process(String name,int arriveTime,int runtimeLength){
            this.arriveTime = arriveTime;
            this.name = name;
            this.runtimeLength = runtimeLength;
        }
    
        public static void setCount(int count) {
            Process.count = count;
        }
    
        public static int getCount() {
            return count;
        }
    
        public String getName() {
            return name;
        }
    
        public double getArriveTime() {
            return arriveTime;
        }
    
        public int getRuntimeLength() {
            return runtimeLength;
        }
    
        @Override
        public String toString() {
            return "ProcessName: "+getName()+" ProcessTime: "+getArriveTime()+" ProcessLength: "+getRuntimeLength();
        }
    }