Java アプリから .bat ファイルを実行しようとしています。見つけたすべての方法を試しましたが、どれもうまくいかないようです。
問題は、.bat ファイルへのパスにスペースが含まれていることです。
私は今この方法を使用しているので、Eclipse コンソールで結果を確認できます。
私の実際のコードは次のとおりです。
Runtime rt = Runtime.getRuntime();
String processString = "cmd /c \"" + homeFolder.getAbsolutePath() + SETUP_FILE + "\" \"" + homeFolder.getAbsolutePath() + "\"";
try {
Process proc = rt.exec(processString);
...
}
引用符をエスケープせずに引用符をエスケープし、文字列を区切り、String[]
スペースで区切られた各コマンドを独自のセルに配置してみました。
{ "cmd", "/c", \"" + homeFolder.getAbsolutePath() + SETUP_FILE + "\" ... };
繰り返しますが、引用符をエスケープしてもしなくても、何も機能しません。
また、配列と文字列の両方へのパスをハードコーディングしてみました。毎回同じ結果。
homeFolder = C:\Users\La bla bla\workspace\ToolMaker\bin\
SETUP_FILE = setup.bat
コマンド全体は次のとおりです。
cmd /c "C:\Users\La bla bla\workspace\ToolMaker\bin\setup.bat" "C:\Users\La bla bla\workspace\ToolMaker\bin"
繰り返しますが、引用符の有無にかかわらず、同じ出力:
Output:
Error: 'C:\Users\La' is not recognized as an internal or external command,operable program or batch file.
明らかに、私は Windows (7、64 ビット プロフェッショナル) で実行しています。Java 7
以前にこの問題を抱えていたと言う人が何人かいたのを見ましたが、それを回避する方法についての答えが見つかりませんでした.