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

时间:2020-04-24 06:10:56

标签: java cmd runtime-error

所以我想使用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)仅适用于某些命令吗?

1 个答案:

答案 0 :(得分:3)

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

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

因此,您有2个选择:

  • 添加扩展名:

    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一起运行。