Заменить пробелы в путях чем? - PullRequest
3 голосов
/ 20 января 2011

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

Ответы [ 4 ]

9 голосов
/ 20 января 2011

Вы можете либо заключить полный путь в кавычки, как это:

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

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

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

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

4 голосов
/ 20 января 2011

инкапсулирует весь путь между кавычками.

cd "/Documents and Settings/test"
3 голосов
/ 20 января 2011

Вам нужно запустить команду, которая работает из командной строки bash. например CD / Документ и настройки / не будет. Попробуйте cd C:Documents\ and\ Settings, что делает.

ПРИМЕЧАНИЕ: bash требует, чтобы вы использовали C: в начале для доступа к этой папке. Использование just / at start даст вам виртуальный root у cygwin.

3 голосов
/ 20 января 2011

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

Чтобы вы могли использовать

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

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

...