我正在尝试从我的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。
我看到有些人之前也遇到过这个问题,但是我找不到解决方法。