我构建了一个非常简单的程序来测试运行
Java的命令行操作.那就是:后来我希望能够修改此代码,使用“move”到我可以进入命令行的任何其他命令(包括调用其他非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
请注意,当我将命令复制/粘贴到命令提示符窗口时,文件会成功移动.
我错过了什么?我读过的所有其他问题似乎表明这应该有效.
谢谢!
编辑现在工作,感谢大家的帮助!令人讨厌的是它隐藏了“move”是cmd.exe参数的方式.我希望他们在调用.exec()方法时复制/粘贴时有效.那好吧.