Runtime.exec() 是否仅适用于某些命令?

Does Runtime.exec() work only for certain commands?

所以我想使用 windows 树的命令来显示目录中所有文件的层次结构图形表示。

但是当我运行命令时,

Process cmd=Runtime.getRuntime().exec("tree \"path\" /f /a");

我收到这个错误,

java.io.IOException: Cannot run program "tree": CreateProcess error=2, The system cannot find the file specified

java.lang.Runtime.exec(String command)是否只对某些命令有效?

您要执行的程序名为 tree.com

是命令行解释器cmd.exe使用PATHEXT环境变量来搜索各种扩展程序的路径。 Java 的 API 没有。

所以你有两个选择:

  • 添加扩展名:

    Process cmd = Runtime.getRuntime().exec("tree.com \"path\" /f /a");
    
  • 运行 它使用 cmd.exe:

    Process cmd = Runtime.getRuntime().exec("cmd.exe /c tree \"path\" /f /a");
    

.exe 扩展名是可选的,例如"cmd /c tree \"path\" /f /a" 也可以,但需要任何其他扩展名(例如 .com),并且脚本(.bat.cmd)必须是 运行 和 cmd.exe.