Используйте приложение Java для запуска команд в Windows cmd

import java.io.*;

public class ColorTest {
    public static void main(String [] args){
        try{
            //Process p = Runtime.getRuntime().exec("cmd /c color 0a");
            BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = null;
            while ((line = in.readline()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Я не понимаю, почему команда не выполняется. Прокомментированная строка - это та, с которой мне нужна помощь.


person user4508513    schedule 05.08.2015    source источник
comment
Прочтите javadocs для getRuntime ()   -  person FredK    schedule 05.08.2015
comment
java - язык с учетом регистра   -  person Madhawa Priyashantha    schedule 05.08.2015
comment
Похоже, вы ожидаете, что запущенная команда cmd /c повлияет на командное окно, если таковое имеется, в котором запущено приложение. Что произойдет, если вы воспользуетесь другой командой, обеспечивающей вывод? Что произойдет, если вы cmd /k?   -  person Andy Thomas    schedule 05.08.2015
comment
@AndyThomas cmd / k по-прежнему не запускает цвет, но запускает другие команды, такие как help, но застревает в бесконечном цикле, мне нужно выйти из него ctrl c. Cmd / c позволяет ввести другую команду после завершения приложения   -  person user4508513    schedule 05.08.2015
comment
Должно быть, что-то не так с вашей командой (cmd). Если вы замените exec("cmd ...) на exec("ping google.com"), он будет работать нормально.   -  person carpenter    schedule 05.08.2015
comment
Похоже, такие команды, как заголовок и цвет, не работают   -  person user4508513    schedule 05.08.2015
comment
Я подозреваю, что процесс cmd.exe, который вы запускаете из Java, не влияет на консоль. Вы можете дать ему возможность воздействовать на консоль, используя start для создания нового окна. Для банального примера - start cmd /k color 0a.   -  person Andy Thomas    schedule 05.08.2015
comment
Нет, выдает исключение IOException   -  person user4508513    schedule 05.08.2015
comment
@AndyThomas выбрасывает исключение IOException   -  person user4508513    schedule 05.08.2015
comment
Извините, с Java это было бы cmd /k start color 0a.   -  person Andy Thomas    schedule 05.08.2015
comment
@AndyThomas, спасибо, понял, но как мне применить его к моему текущему окну?   -  person user4508513    schedule 05.08.2015
comment
Не знаю, сможете ли вы с помощью команды color, вызываемой из Java. См. Также ответы на этот аналогичный вопрос для сред Windows - stackoverflow.com/questions/1448858/. Обратите внимание, что некоторые ответы не относятся к командной консоли Windows.   -  person Andy Thomas    schedule 05.08.2015
comment
См. Также Когда Runtime.exec () не будет хороших советов по правильному созданию и управлению процессом. Затем игнорируйте, что это относится к exec, и используйте ProcessBuilder для создания процесса. Кроме того, разбейте String command на String[] commands, чтобы сохранить пробелы в путях и т. Д.   -  person Andrew Thompson    schedule 06.08.2015