如何在java中执行命令行.exe文件

2022-09-02 21:10:16
  1. 我想使用java程序将avi文件转换为其他3gp。
  2. 为此,我使用的是“E.M. Total Video Converter Command Line 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);

如果使用 start 命令并且要启动的文件的路径包含空格,则必须为 start 命令指定标题。

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();
    }
}

答案 1

你已经在你的问题中得到了所有的碎片。这只是一个把它们放在一起的问题。

如下所示的内容应该有效:

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();
    }
}

也就是说,像这样的硬编码路径不是一个好主意,你应该从某个地方阅读它们;程序的参数、属性文件等。


答案 2

在某些情况下,您希望能够执行更多操作,例如: - 杀死exe以防其挂起。- 能够中止执行文件。- 获取 exe 输出(到标准输出和标准错误) - 异步运行它。您可以在以下位置阅读解决方案:http://developer4life.blogspot.co.il/2013/01/executing-command-line-executable-from.html