Замените пробелы в путях на что?


Я запускаю bash из Java-приложения, и у меня в пути есть команда, которая выполняется внутри пространств bash (пример cd / Documents and Settings / test), я запускаю команду с помощью Process Builder, но она не работает, когда путь имеет пробелы. Я пытаюсь заменить пробелы на %20, но это не помогает. Что же делать ?

4 3

4 ответа:

Вы можете либо инкапсулировать полный путь в метки quotion следующим образом:

String quoted = "\"" + pathString + "\"";

Или, как вы используете bash, экранируйте пробелы:

String escaped = pathString.replace(" ", "\\ ");

Оба должны работать в качестве аргумента для вашей команды cd.

Инкапсулируйте весь путь между цитатами.

cd "/Documents and Settings/test"

Использование %20 здесь-нонсенс, это не URL. Используйте String[] или List[] вместо String, и тогда вы можете оставить пробелы, как они есть, там больше нет разделения аргов строки cmd.

Так что вы можете использовать

"cd", "/Documents and Settings/test"

Однако это не имеет смысла как команда оболочки. Вы не можете изменить рабочий dir Java таким образом, как вы начинаете новый процесс. Вы можете написать сценарий оболочки (пакетный файл) и вызвать его из Java.

Вам нужно выполнить команду, которая работает из командной строки bash. например, cd / Document and Settings/ won't. Try cd C:Documents\ and\ Settings, который делает.

Примечание: bash требует, чтобы вы использовали C: в начале для доступа к этой папке. Использование just / в начале даст вам виртуальный корень cygwin.