Выполнение системных команд из-под Java (Runtime.exec)

95
19 октября 2019, 12:20

Нуждаюсь в пояснении синтаксиса "системных команд" для параметра метода exec().

Runtime.getRuntime().exec("cmd /c start cmd.exe");

Что, например, в данном случае значит мета-символ \c и параметр start. Понятно, что запускает командную строку, но почему просто не cmd.exe? Ведь некоторые процессы запускаются просто по пути. Где смогу найти полное руководство по синтаксису? Документация Oracle молчит по этому поводу...

Заранее спасибо)

Answer 1

Это команды консоли windows (нажмите Пуск-выполнить-введите "cmd"), которые запускает виртуальная java машина посредством Runtime.getRuntime().exec(...).

Runtime.getRuntime().exec("cmd /c start cmd.exe");

При такой комбинации команд запускается отдельное окно cmd.

cmd - командный интерпретатор

start - команда запуска чего-либо в отдельном окне

C:\Windows\System32>cmd /?
Запуск новой копии интерпретатора команд Windows.
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] строка]
/C      Выполнение указанной команды (строки) с последующим завершением.

Фактически мы делаем так:

  1. запустить интерпретатор cmd

  2. запустить в нем команду start, которая откроет отдельное окно cmd

  3. завершить работу cmd

P.S. Если бы предполагалось что программа на java должна выполнятся не в Windows а например в Linux, то команды были бы другими.

READ ALSO
Hibernate: колонка не мапится на геттер

Hibernate: колонка не мапится на геттер

Написал самый обычный класс-сущность и столкнулся с проблемой

120
ошибка при работе с библеотекой Kotlogram java.lang.RuntimeException: AuthKey must be 256 Bytes found 0 bytes

ошибка при работе с библеотекой Kotlogram java.lang.RuntimeException: AuthKey must be 256 Bytes found 0 bytes

Я разрабатываю приложение на Java с использованием библиотеки kotlogramПример кода:

163
Цикл foreach против Iterable.foreach в Java 8: что лучше?

Цикл foreach против Iterable.foreach в Java 8: что лучше?

Что из следующего является лучше практикой в Java 8?

123
Как проверить время отрисовки ui layout xml

Как проверить время отрисовки ui layout xml

gui приложения при открытии долго грузиться как можно померить время загрузки ? за сколько от отрисовывает layoutxml

86