从Java应用程序执行本机DOS命令

时间:2013-11-16 00:02:54

标签: java windows cmd

我对从Java应用程序执行cmd.exe move命令感兴趣。

我知道如何从Java中调用外部进程。 StackOverflow中有关于这一点的100个问题。我无法弄清楚的是命令行应该是什么样的。

例如,在DOS窗口中,这是我输入的命令:

move dirA dirB

并将目录dirA移至目录dirB。正是我想做的。由于需要太多上下文的原因,并且会减少问题,纯java解决方案不是我所关注的特定上下文中的选项。 (哦,在庞大而复杂的遗留系统中运行的乐趣!)

我从java调用的外部系统命令是什么?看起来应该只是:

"cmd move dirA dirB"

然而,对我来说失败了。我熟悉这个question,但它没有直接回答我的问题。

1 个答案:

答案 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()