输入命令到Java runtime cmd提示符

时间:2014-05-20 16:42:53

标签: java cmd

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

但是条目中的空格在提示中返回错误:“系统找不到指定的路径”

2 个答案:

答案 0 :(得分:0)

cmd.exe的单个调用中,不可能通过命令行执行两个命令:cmd.exe /c之后是单个命令,之后是另一个/c被解释为该命令的参数。

此外,调用它两次也不会得到你想要的东西,因为当进程退出时忘记了目录的更改,所以第二次调用将在Java进程的默认工作目录中运行,而不是您第一次调用时更改为的目录。

另外,这很不幸,但Java并没有提供一种方法来改变自己进程的当前工作目录。

据我所见,您有两种选择:

  1. 确保您的Java程序已启动,工作目录设置为您需要运行子程序的工作目录
  2. 调用单个.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];