2011-01-20 21 views
3

私はJavaアプリケーションからbashを起動します。私はパスの中にbashスペースを実行するコマンドを持っています (例cd/Documents and Settings/test)、プロセスビルダでコマンドを実行します。私はスペースを%20で置き換えようとしていますが、助けません。何をすべきか ?パスの空白文字を何に置き換えますか?

+3

bashプロンプトから動作するコマンドを実行する必要があります。例えばcd/Document and Settings /は表示されません。 'cd C:Documents \と\ Settings'を試してください。 –

+0

@Peter Lawrey:答えとして、コメントではなく投稿してください。 – Barend

+0

@Barend、完了。 ;) –

答えて

8

あなたはこのようquotionマークにフルパスをカプセル化することができますいずれか

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

は両方の引数として動作するはずですあなたcdコマンド

4

引用符間のパス全体をカプセル化します。

cd "/Documents and Settings/test" 
3

ここで%20を使用するのはナンセンスですが、URLはありません。 Stringの代わりにString []またはList []を使用すると、スペースをそのまま残すことができます。

だから、しかし、これはシェルコマンドとして意味をなさない

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

を使用することができます。このようにJavaの作業ディレクトリを変更することはできません。新しいプロセスを開始するときです。シェルスクリプト(バッチファイル)を作成してJavaから呼び出すことができます。もしbashを使用して、スペースをエスケープし、

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

のか:

+0

+1は、 'プロセス'を使って 'cd'コマンドを実行しても効果がないことを指摘しています。 –

3

bashプロンプトから動作するコマンドを実行する必要があります。例えばcd/Document and Settings /は表示されません。試してcd C:Documents\ and\ Settingsがあります。

注:このフォルダにアクセスするには、最初にC:を使用する必要があります。ちょうど/を最初から使用するとcygwinの仮想ルートが得られます。

関連する問題