2016-07-12 9 views
0

私は私のJavaプログラムからbatファイルを呼び出す必要がバットファイルのパスは、その名前にスペースを持つフォルダが含まれています。私はこれらのフォルダ名を逃れることができていますが、問題はbatファイルのパスは、変数から来ていると私は変数の値をエスケープする方法がわからないということです。 batファイルの変数から渡されたときに名前にスペースを含むフォルダ名をエスケープするにはどうすればよいですか?

パス: - C:/マイデータ/ batfile.bat 私のコードスペースをエスケープするには:

これは

String t = "C://\"My Data\"//BatFile.bat"; 
Process process=Runtime.getRuntime().exec("cmd /c start /wait "+t); 

これは動作しません正常に動作

String t = path+"//BatFile.bat"; 
Process process=Runtime.getRuntime().exec("cmd /c start /wait "+t); 

上記のパス変数には、batファイルのパス "C:/ My Data"が含まれています。

提案?

+0

2つ目のシナリオでは、 'PATH'の値は何ですか? –

+0

は、あなたが正しいならば、彼は 'でReplaceAll(」『』\\\\『) 'あなたは全体のパスを逃れることができる – Jens

+0

@Jensで空白をエスケープしてみてください+パス+「// BatFile.bat \」」、パスは、私はそれが 『\\』または 『\\\\』 –

答えて

4

あなたは引用符に入れて行うことができます。

Process process=Runtime.getRuntime().exec("cmd", "/c", "start /wait \""+t+"\""); 

注:パスがそうしてはならないのに、テキストでも、引用符が含まれている場合、これは動作しません。

+1

このソリューションを提供いただき、ありがとうございます。私は答えを受け入れました。乾杯:) – Naseem

関連する問題