Как выполнить командную строку. EXE-файл в Java - PullRequest
19 голосов
/ 11 февраля 2010
  1. Я хочу конвертировать AVI файл в 3GP используя программу Java.
  2. Для этого я использую "Е.М. Всего Конвертер видео командной строки 2,43 " и команда для этого -
    "C: \ E.M. TVCC> TVCC -f E: \ TestVideo \ 01.avi -o E: \ OutputFiles \ target.3gp "
  3. У меня есть программа для выполнения команды строка exe файла на сайте http://www.rgagnon.com/javadetails/java-0014.html, которая:

Путь к исполняемому файлу с пробелами в нем

Вы можете указать путь к программе, которая будет выполнена. В табличной форме Win вам нужно поставить путь в кавычках, если путь содержит пробелы.

public class Test {
  public static void main(String[] args) throws Exception {
    Process p = Runtime.getRuntime().exec(
       "\"c:/program files/windows/notepad.exe\"");
    p.waitFor();
  }
}

Если вам нужно передать аргументы, это безопаснее для массива String, особенно если они содержат пробелы.

String[] cmd = { "myProgram.exe", "-o=This is an option" };
Runtime.getRuntime().exec(cmd);

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

String fileName = "c:\\Applications\\My Documents\\test.doc";
String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",fileName};
Runtime.getRuntime().exec(commands);

*** Может ли кто-нибудь помочь мне поместить вышеуказанную команду в этот код? *** Я не знаю синтаксических правил для помещения этой команды в приведенный выше код. Пожалуйста, помогите мне.

Это точный код Java, который я использую:

public class Test {
    public static void main(String[] args) throws Exception {

        String[] cmd = { "C:\\Program Files\\E.M. TVCC\\TVCC.exe", "-f C:\\Program Files\\E.M. TVCC\\01.avi", "-o C:\\Program Files\\E.M. TVCC\\target.3gp" };
        Process p = Runtime.getRuntime().exec(cmd);
        p.waitFor();
    }
}

Ответы [ 2 ]

25 голосов
/ 11 февраля 2010

У вас есть все части в вашем вопросе. Все дело в том, чтобы собрать все это вместе.

Должно работать что-то вроде следующего:

public class Test {
    public static void main(String[] args) throws Exception {

        String[] cmd = { "C:\\E.M. TVCC\\TVCC.exe", "-f E:\\TestVideo\\01.avi", "-o E:\\OutputFiles\\target.3gp" };
        Process p = Runtime.getRuntime().exec(cmd);
        p.waitFor();
    }
}

Тем не менее, жесткие пути кодирования, как это, не очень хорошая идея, вы должны прочитать их откуда-то; аргументы вашей программы, файл свойств и т. д.

3 голосов
/ 03 января 2013

В некоторых случаях вы хотите иметь возможность делать больше, например: - Убей exe, если он завис. - Уметь отменить exe. - Получить вывод exe (к стандартному выводу и стандартной ошибке) - Запустите это асинхронно. Вы можете прочитать о решении по адресу: http://developer4life.blogspot.co.il/2013/01/executing-command-line-executable-from.html

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