src
通过使用上述程序,我可以在终端中执行命令,但它会打开终端的多个实例。我想在同一个终端中执行这两个命令。这可能吗?
答案 0 :(得分:2)
根据建议,您可以将命令放在将从java程序运行的.bat
文件中,也可以使用&
或&&
运算符。
(两个运算符之间的区别在于&&
只有在第一个命令成功时才会执行第二个命令。)
试试这个:
rt.exec("cmd /c start cmd.exe /K \"java -version && javac -version\"");
答案 1 :(得分:1)
您也可以使用ProcessBuilder java API来执行此操作。默认情况下,Runtime.getRuntime()。exec将对输入进行标记,在ProcessBuilder的情况下,它将按原样执行命令。
public class TestCommands {
public static void main(String[] args) throws IOException, InterruptedException {
String[] commands = {"echo hello","echo hi","java -version"};
for(String command : commands) {
execute(command);
}
}
public static void execute(String command) throws InterruptedException, IOException {
ProcessBuilder builder = new ProcessBuilder("cmd.exe","/c",command);
Process process = builder.inheritIO().start();
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String readline;
while ((readline = reader.readLine()) != null) {
System.out.println(readline);
}
}
}