运行ProcessBuilder时出现Java问题-如何从外部文件获取要执行的命令?

时间:2018-07-08 17:03:28

标签: java command-line processbuilder

我不是Java方面的专家。

我正在尝试通过Java应用程序运行一些ms-dos命令。如果我用Java代码编写了命令,一切都会正常进行。

但是,如果我要将命令存储在输出“ .txt”文件中,请在执行过程中读取该文件,最后通过Java运行命令,否则将无法正常工作。

请参见以下代码:

        String abc = "cd \"C:\\Users\\Adm\" && dir";
        ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", abc);
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        ...

在这种情况下,结果与预期的一样,因为abc已在Java代码中填充。但是,如果我从readbuffer(外部文件)中获取abc的内容,它将无法正常工作。

请问诀窍是什么?

请注意,我正在正确读取外部文件。正确检索了外部文件中的每一行(每一行包含一个命令)。

我知道Java的“ /”存在一些问题,有时会迫使我将其声明为“ //”,但是无论我在外部文件中拥有什么,它都将无法工作。

在外部“ .txt”文件中,为了填充abc,我尝试过:

"cd \"C:\\Users\\Adm\" && dir"
cd \"C:\\Users\" && dir
"cd \"C:\Users\Adm\" && dir"
cd \"C:\Users\" && dir

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

只需将要运行的命令放在文件中即可。

如果要运行:

 cd "C:\Users\Adm" && dir

这就是您应该在文件中放入的内容。

不要像格式化Java代码那样尝试格式化或转义它。 .txt文件不是用Java编写的,不使用或不遵守Java语法。