Runtime.getRuntime().exec(new String[] {
"cmd",
"/c",
"start",
"cd",
"M:\\MandNDrives\\mwallace\\PROPHET\\PROPHET\\Prophet2012"
"prpht0912" //shortcut to prpht0912.exe
"eorinput" // eorinput.ind, input sheet that prpht0912.exe processes
打开我需要的目录的命令提示符。
要执行该文件夹中包含的程序,我需要从命令提示符执行“prpht0912 eorinput”,如:
M:\MandNDrives\mwallace\PROPHET\PROPHET\Prophet2012>prpht0912 eorinput
但是条目中的空格在提示中返回错误:“系统找不到指定的路径”
答案 0 :(得分:0)
在cmd.exe
的单个调用中,不可能通过命令行执行两个命令:cmd.exe /c
之后是单个命令,之后是另一个/c
被解释为该命令的参数。
此外,调用它两次也不会得到你想要的东西,因为当进程退出时忘记了目录的更改,所以第二次调用将在Java进程的默认工作目录中运行,而不是您第一次调用时更改为的目录。
另外,这很不幸,但Java并没有提供一种方法来改变自己进程的当前工作目录。
据我所见,您有两种选择:
.bat
文件,其中包含您需要运行的两个命令。答案 1 :(得分:0)
执行以下命令
M:\MandNDrives\mwallace\PROPHET\PROPHET\Prophet2012>prpht0912 eorinput
您需要以下
String[] commands = new String[] { "cmd", "/c", "M:\\MandNDrives\\mwallace\\PROPHET\\PROPHET\\Prophet2012\\prpht0912.exe eorinput" };
Runtime.getRuntime().exec(commands);
注意**
当您传递数组时,ProcessBuilder会将第一个元素视为程序,并将其作为该程序的参数。
String prog = cmdarray[0];