私はJavaアプリケーションからbashを起動します。私はパスの中にbashスペースを実行するコマンドを持っています (例cd/Documents and Settings/test)、プロセスビルダでコマンドを実行します。私はスペースを%20で置き換えようとしていますが、助けません。何をすべきか ?パスの空白文字を何に置き換えますか?
3
A
答えて
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の仮想ルートが得られます。
bashプロンプトから動作するコマンドを実行する必要があります。例えばcd/Document and Settings /は表示されません。 'cd C:Documents \と\ Settings'を試してください。 –
@Peter Lawrey:答えとして、コメントではなく投稿してください。 – Barend
@Barend、完了。 ;) –