如何在Java中执行本机命令?

如何在Java中执行本机命令?,java,shell,command,native,Java,Shell,Command,Native,我非常了解如何通过Runtime.getRuntime().exec(command)执行命令并处理输出,但这是非常有限的 以Windows为例(具体来说是Vista,但这并不重要) 如何通过ProcessBuilder(或任何类)执行诸如“echo”、“cd”、“md”、“rd”等命令,以及cmd.exe内部的任何其他命令在Java中?您只需调用cmd/c dir,而不只是在Runtime.exec或ProcessBuilder中调用dir,或以其他方式在Java中运行外部应用程序。另一个技巧

我非常了解如何通过Runtime.getRuntime().exec(command)执行命令并处理输出,但这是非常有限的

以Windows为例(具体来说是Vista,但这并不重要)


如何通过ProcessBuilder(或任何类)执行诸如“echo”、“cd”、“md”、“rd”等命令,以及cmd.exe内部的任何其他命令在Java中?

您只需调用
cmd/c dir
,而不只是在Runtime.exec或ProcessBuilder中调用
dir
,或以其他方式在Java中运行外部应用程序。

另一个技巧是利用Ant库并将
()的编程版本组合在一起。这还使您能够访问各种Ant支持的输入/输出处理和过滤


这不是在这里编写Ant XML脚本,而是从代码中调用Ant。

ProcessBuilder是正确的类()。是否有一些特定的命令您在完成时遇到困难?值得注意的是,您列出的每个命令都可以通过Java库完成。我知道您可能不具备所需的所有功能,但我建议您尽可能使用Java库,只有在必要时才求助于ProcessBuilder来完成它。@glowcoder当然。它们只是实际命令提示符内部的命令示例,而不是系统本身。我不会使用任何这些特定的命令来执行实际的编程任务。那太傻了。Java有能力做到这一点。如果您一定要知道,我只需要Java能够从我正在制作的命令外壳包装中执行所有/大多数本机命令。@KyleMahan是的。制作命令外壳包装器。基本上是由Java和GUI运行的命令提示符。主要用于我无法访问终端的某些特定UNIX机器上。对于其他人,您可以制作自定义包装器或使用Apache Commons exec:谢谢!您知道UNIX上的等价物吗?对于碰巧看到这个答案的人来说,on*nix系统中的等价物应该是:
sh-c
,不过,我建议您使用ApacheCommons Exec或类似的工具来处理所有这些问题。