我构建了一个非常简单的程序来测试运行独立于 Java 的命令行操作。那就是:稍后我希望能够将此代码从使用“移动”修改为我可以在命令行中输入的任何其他命令(包括调用其他非 Java 软件)。
我确实搜索并阅读了大约两打答案,但他们都建议我正确地尝试了这个,与我的简单测试无关,或者提出了其他不起作用的解决方案(比如使用 .exec(String[]) 方法而不是 . exec(String) - 相同的结果!)。
这是我的代码:
import java.io.IOException;
public class RunCommand {
private static final String PATH_OUT = "C:\\Users\\me\\Desktop\\Temp\\out\\";
private static final String FILE = "sample.txt";
private static final String PATH_IN = "C:\\Users\\me\\Desktop\\Temp\\in\\";
public static void main(String[] args) {
try {
String command = "move "+PATH_IN+FILE+" "+PATH_OUT;
System.out.println("Command: "+command);
Runtime.getRuntime().exec(command);
} catch (IOException e) {
e.printStackTrace();
}
}
}
这是我运行时看到的输出:
Command: move C:\Users\myingling\Desktop\CDS\Temp\in\sample.txt C:\Users\myingling\Desktop\CDS\Temp\out\
java.io.IOException: Cannot run program "move": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at RunCommand.main(RunCommand.java:13)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 5 more
请注意,当我将命令复制/粘贴到命令提示符窗口时,文件会成功移动。
我错过了什么?我读过的所有其他问题似乎都表明这应该有效。
谢谢!
编辑现在工作,感谢大家的帮助!令人讨厌的是它隐藏的方式“移动”是cmd.exe的参数。我希望他们做到了,如果它在复制/粘贴时有效,那么当您调用 .exec() 方法时它就有效。那好吧。