Привет, мне нужно выполнить несколько команд 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" не распознается как внутренняя или внешняя команда,
Это хороший пример запуска команд оболочки. Вам не нужно открывать шпатлевку для запуска системных команд.
Вы можете использовать собственные библиотеки java для выполнения команд оболочки, просто имейте в виду, что команды являются специфичными для ОС. Я сделал это раньше для проекта, где мы должны были моделировать оболочку в java, это довольно легко, как только вы знаете, что делаете.
Я wold рекомендую немного модифицировать код. Например