Работает ли Runtime.exe c () только для определенных команд? - PullRequest
1 голос
/ 24 апреля 2020

Поэтому я хочу использовать команду дерева 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 Ответ

3 голосов
/ 24 апреля 2020

Программа, которую вы пытаетесь выполнить, называется tree.com.

Это интерпретатор командной строки cmd.exe, который использует переменную среды PATHEXT для поиска пути для программ с различными расширениями , API Java отсутствует.

Таким образом, у вас есть 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...