Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未获取完整的java exec输出_Java_Runtime_Exec_Wmi - Fatal编程技术网

未获取完整的java exec输出

未获取完整的java exec输出,java,runtime,exec,wmi,Java,Runtime,Exec,Wmi,我正在使用ApacheExec库运行以下程序 wmic LOGICALDISK GET Name,ProviderName /FORMAT 此命令返回所有映射驱动器及其映射的列表。当我从命令行运行它时,它工作得非常好。当我在java中运行它时,它返回中间的2个驱动器和1个驱动器。 我已经通过管道将流传输到stdout,使用了streamgobbler,等等。我运行了其他几个命令,这些命令工作正常,我读取流时没有问题。我被难住了。有什么想法吗?可能是编码吗?我以前从来没有遇到过这个问题 哦,我还

我正在使用ApacheExec库运行以下程序

wmic LOGICALDISK GET Name,ProviderName /FORMAT
此命令返回所有映射驱动器及其映射的列表。当我从命令行运行它时,它工作得非常好。当我在java中运行它时,它返回中间的2个驱动器和1个驱动器。 我已经通过管道将流传输到stdout,使用了streamgobbler,等等。我运行了其他几个命令,这些命令工作正常,我读取流时没有问题。我被难住了。有什么想法吗?可能是编码吗?我以前从来没有遇到过这个问题

哦,我还运行过ProcessBuilder、Runtime.exec和DefaultExecutor。同样的结果贯穿始终


谢谢。

stdbuf-o0 wmic LOGICALDISK获取名称,提供程序名称/格式| cat

从以下站点下载stdbuf:

或者可能:

public static String execCmd(String cmd) throws java.io.IOException {
    Process proc = Runtime.getRuntime().exec(cmd);
    java.io.InputStream is = proc.getInputStream();
    java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
    String val = "";
    if (s.hasNext()) {
        val = s.next();
    }
    else {
        val = "";
    }
    return val;
}

发件人:

您是否尝试运行“wmic LOGICALDISK GET Name,ProviderName/FORMAT>file.txt”并将其与您的结果进行比较?这真的很奇怪。我的jar中有mappings.cmd文件,只是将其作为tmp文件转储,以便运行它。我正在使用Netbeans,它将允许我在内部执行该文件。Netbeans甚至可以获得相同的输出。从命令行C:D:G:\\SomeMachine\somedir F:\\SomeOtherMachine\otherdir Y:\\DomainController\domain Z:\\DBServer\dbdir运行输出我从java运行时执行时获得的输出C:D:F:\\SomeOtherMachine我执行了该命令。如果我从命令行运行,它是完美的。如果我从java运行,输出在文件中仍然是混乱的。你确定你在读取进程的stout和stderr吗?是的。我用了无数种方法。奇怪的是,如果我从ide中以批处理文件的形式运行该命令,Netbeans将获得相同的输出。我已经为文件、stdout等设置了/OUTPUT和/APPEND标记。我可能需要找到一种方法,在启动时使用启动批处理运行脚本,然后写入输出。