我编写了一个非常简单的程序来测试在Java之外运行命令行操作。也就是说,我希望以后能够修改这个代码,从使用“move”到任何其他我可以输入到命令行中的命令(包括调用其他非Java软件)。
我已经搜索并阅读了大约二十几个答案,但它们要么建议我正确地尝试了这个,要么与我的简单测试无关,或者提出了其他解决方案,这些解决方案不起作用(例如使用.exec(String[])方法而不是.exec(String) - 结果相同!)。
以下是我的代码:
请注意,当我将命令复制/粘贴到命令提示符窗口时,文件可以成功移动。
我错过了什么?所有其他问题似乎都表明这应该有效。
谢谢!
编辑:现在可以工作了,感谢大家的帮助!很烦人的是,“move”是cmd.exe的一个参数。我希望他们能让它像复制和粘贴一样适用于.exec()方法调用。不过没关系。
我已经搜索并阅读了大约二十几个答案,但它们要么建议我正确地尝试了这个,要么与我的简单测试无关,或者提出了其他解决方案,这些解决方案不起作用(例如使用.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
请注意,当我将命令复制/粘贴到命令提示符窗口时,文件可以成功移动。
我错过了什么?所有其他问题似乎都表明这应该有效。
谢谢!
编辑:现在可以工作了,感谢大家的帮助!很烦人的是,“move”是cmd.exe的一个参数。我希望他们能让它像复制和粘贴一样适用于.exec()方法调用。不过没关系。