Как запустить зависимые команды CMD в Java

1

Привет, мне нужно выполнить несколько команд cmd, зависящих друг от друга в java:

cd  "C:\Program Files (x86)\puTTY"
pscp   -pw pwd F:\Test\file_to_send.txt login@my_ip:/home/bin

Я пробовал такие способы:

1)

Runtime.getRuntime().exec("cmd/c start F:\\Test\\move_to_linux.bat"); и установить в bat файл:

cd  "C:\Program Files (x86)\puTTY"
pscp   -pw pwd F:\Test\file_to_send.txt login@my_ip:/home/bin

2)

try {
        String[] command = new String[3];
        command[0] = "cmd";
        command[1] = "/c";
        command[2] = "cd \"C:\\Program Files (x86)\\puTTY\" && pscp   -pw pwd F:\\Test\\file_to_send.txt login@my_ip:/home/bin";

        Process p = Runtime.getRuntime().exec(command);

        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = reader.readLine();
        while (line != null) {
            System.out.println(line);
            line = reader.readLine();
        }
        BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
        BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        String Error;
        while ((Error = stdError.readLine()) != null) {
            System.out.println(Error);
        }
        while ((Error = stdInput.readLine()) != null) {
            System.out.println(Error);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

В 1) cmd открывается в папке F:\Test, и команды выполняются отдельно от F:\Test. В 2) "pscp" не распознается как внутренняя или внешняя команда,

Теги:
cmd

1 ответ

0

Это хороший пример запуска команд оболочки. Вам не нужно открывать шпатлевку для запуска системных команд.

Вы можете использовать собственные библиотеки java для выполнения команд оболочки, просто имейте в виду, что команды являются специфичными для ОС. Я сделал это раньше для проекта, где мы должны были моделировать оболочку в java, это довольно легко, как только вы знаете, что делаете.

Я wold рекомендую немного модифицировать код. Например

  1. Чтение ввода пользователя
  2. Ввод пользователя для анализа
  3. Ошибка возврата или команда выполнения

Ещё вопросы

Сообщество Overcoder
Наверх
Меню