我对从Java应用程序执行cmd.exe move
命令感兴趣。
我知道如何从Java中调用外部进程。 StackOverflow中有关于这一点的100个问题。我无法弄清楚的是命令行应该是什么样的。
例如,在DOS窗口中,这是我输入的命令:
move dirA dirB
并将目录dirA
移至目录dirB
。正是我想做的。由于需要太多上下文的原因,并且会减少问题,纯java解决方案不是我所关注的特定上下文中的选项。 (哦,在庞大而复杂的遗留系统中运行的乐趣!)
我从java调用的外部系统命令是什么?看起来应该只是:
"cmd move dirA dirB"
然而,对我来说失败了。我熟悉这个question,但它没有直接回答我的问题。
答案 0 :(得分:1)
不能保证,但我想,您需要在命令前添加命令来运行Windows命令shell cmd /c
到您要执行的命令。在所需命令完成后,/c
开关终止命令shell。
尝试:
Runtime.getRuntime().exec("cmd /c move dirA dirB");
编辑:
作为Ian Roberts 在下面的评论中已经注意到,当一个或两个目录在其路径中有空格时,考虑情况也很重要。因此,使用单独的字符串来形成finall命令更加安全,如下所示:
new ProcessBuilder("cmd", "/c", "move", pathToDirA, pathToDirB).start()