在Java运行时cmd提示符下输入命令
打开指向所需目录的命令提示符 要执行该文件夹中包含的程序,我需要从命令提示符执行“prpht0912 eorinput”,如下所示:在Java运行时cmd提示符下输入命令,java,cmd,Java,Cmd,打开指向所需目录的命令提示符 要执行该文件夹中包含的程序,我需要从命令提示符执行“prpht0912 eorinput”,如下所示: Runtime.getRuntime().exec(new String[] { "cmd", "/c", "start", "cd", "M:\\MandNDrives\\mwallace\\PROPHET\\PROPHET\\Prophet2
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
但是,条目中的空格会在提示中返回一个错误:“系统找不到指定的路径”不可能在一次调用
cmd.exe
时通过命令行执行两个命令:cmd.exe/c
后面跟着一个命令,之后的另一个/c
将被解释为该命令的参数
此外,两次调用它也不会得到您想要的结果,因为进程退出时会忘记对目录的更改,因此第二次调用将在Java进程的默认工作目录中运行,而不是在第一次调用时更改到的目录中运行
另外,这也是不幸的,但是Java没有提供一种方法来更改其自身进程的当前工作目录
在我看来,你有两个选择:
.bat
文件执行以下命令
M:\MandNDrives\mwallace\PROPHET\PROPHET\Prophet2012>prpht0912 eorinput
您需要以下内容
M:\MandNDrives\mwallace\PROPHET\PROPHET\Prophet2012>prpht0912 eorinput
注**
当您传递一个数组时,PrimeBu建器将只考虑第一个元素作为程序,并将其保留为该程序的参数。
String[] commands = new String[] { "cmd", "/c", "M:\\MandNDrives\\mwallace\\PROPHET\\PROPHET\\Prophet2012\\prpht0912.exe eorinput" };
Runtime.getRuntime().exec(commands);
定义绊倒的东西你确定是空间吗?如果您不是从M:驱动器运行,请使用cd/dI。我已经尝试了一个答案,但我只是根据我认为您正在尝试的操作猜测您的实际问题。如果我错了,您能否编辑您的问题,以包括您尝试过但不起作用的代码,以及更详细的错误描述?Tripping things up=“系统无法找到指定的路径”。此外,“prpht0912”是“prpht0912.exe”的快捷方式,但是此程序处理同一文件夹中包含的输入表“eorinput.ind”。虽然您可能无法更改当前应用程序的工作目录(没有可疑的类加载器黑客攻击)当然,您可以使用ProcessBuilder指定从JVM中启动的进程的工作目录。他可以为他希望启动的应用程序创建一个ProcessBuilder,并使用它生成一个新的流程对象。相应地设置工作目录。我将目标prpht0912.exe程序和组件移动到我正在使用的java目录。这就解决了问题。但是,如果/当我需要使用多个目录时,我将使用ProcessBuilder路线。谢谢
String prog = cmdarray[0];