Имея пробелы в runtime.getRuntime().exec с 2 исполняемыми файлами
у меня есть команда, которую мне нужно запустить на java в следующих строках:
C:paththat hasspacesplink -arg1 foo -arg2 bar "path/on/remote/machine/iperf -arg3 hello -arg4 world"
эта команда отлично работает, когда путь не имеет пробелов, но когда у меня есть пробелы, я не могу заставить его работать. Я пробовал следующие вещи, на Java 1.7
String[] a = "C:paththat hasspacesplink", "-arg1 foo", "-arg2 bar", "path/on/remote/machine/iperf -arg3 hello -arg4 world"
Runtime.getRuntime().exec(a);
а также
String[] a = "C:paththat hasspacesplink", "-arg1 foo", "-arg2 bar", "path/on/remote/machine/iperf", "-arg3 hello", "-arg4 world"
Runtime.getRuntime().exec(a);
но, похоже, никто ничего не делает. Любой мысли о том, что я делаю неправильно??
1 ответов
каждый аргумент, который вы передаете команде, должен быть отдельным строковым элементом.
так ты команду массив должен выглядеть как...
String[] a = new String[] {
"C:\path\that has\spaces\plink",
"-arg1",
"foo",
"-arg2",
"bar",
"path/on/remote/machine/iperf -arg3 hello -arg4 world"};
каждый элемент теперь будет отображаться как отдельный элемент в программах args
переменная
Я бы также настоятельно рекомендовал вам использовать ProcessBuilder
вместо этого, так как его легче настроить и не требует, чтобы вы обернули некоторые команды в "\"...\""