2011-01-20 30 views
3

我從Java應用程序啓動bash,並在我的路徑中執行內部bash空間內的命令 (示例cd/Documents and Settings/test),我使用Process Builder運行命令,但當path有空格時它不起作用。我嘗試用%20替換空格,但沒有幫助。該怎麼辦 ?用什麼替換路徑中的空格字符?

+3

您需要運行一個從bash提示符起作用的命令。例如cd /文件和設置/不會。試試`cd C:Documents \ and \ Settings`。 – 2011-01-20 12:16:45

+0

@Peter Lawrey:請將其發佈爲答案,而不是評論。 – Barend 2011-01-20 12:18:29

回答

8

您可以封裝在quotion標誌的完整路徑是這樣的:

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

,或者你使用bash,轉義空格:

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

兩個應該作爲一個參數工作,你的cd命令。

4

封裝報價之間的整個路徑。

cd "/Documents and Settings/test" 
3

使用%20這裏是無稽之談,它不是URL。使用String []或List []而不是String,然後您可以將空格保留原樣,沒有更多的cmd行參數在那裏分開。

所以,你可以使用

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

然而,這並沒有什麼意義的shell命令。當你開始一個新的過程時,你不能以這種方式改變Java的工作目錄。你可能想編寫一個shell腳本(批處理文件)並從Java中調用它。

3

您需要運行一個從bash提示符起作用的命令。例如cd /文件和設置/不會。嘗試使用cd C:Documents\ and\ Settings

注意:bash要求您在開始時使用C:來訪問此文件夾。在開始時使用/將會爲您提供cygwin的虛擬根。