来自Java的exec:查找适当的脚本执行器

时间:2015-04-28 22:01:39

标签: java bash powershell process exec

我们目前正在编写一个java应用程序,该应用程序涉及让用户从我们的程序执行另一个程序。这个其他程序可能是另一个可执行文件或脚本,可以使用任意数量的命令行参数。我们已经构建了一个用于执行此操作的GUI,并且在基本功能情况下,它可以正常运行。

我们正在使用apache exec来做到这一点,尽管此时我并不确定它给予我们的价值。

我遇到的问题是使用已知的脚本文件类型。

如果您打开PowerShell并输入./myVisualBasicScript.vbs,它将在内部将其转换为类似wscript.exe ./myVisualBasicScript.vbs的命令。同样,iirc,如果你输入./someTCShellScript.tcsh,它会在bash中调用该脚本。

我想知道是否有一个库可以为我提供此映射。理想情况下,这个库是我可以做的事情,如

CommandLine cmd = new com.awesome.library.CommandLine(
    pathToExecutableOrScript,
    args
);

cmd.execute();

如果这样的库有看门狗和超时以及信号处理等,那将是很好的,但我正在寻找的主要功能是某种从文件类型映射的方法(最好使用扩展和元属性)运行它们的可执行文件。

我已经在我们的应用程序中构建了一个地图,而且我至少知道javas java.awt.Desktop.open()方法,这对我来说几乎完成了这项工作,尽管它更适合于GUI&#39 ; d应用程序。我不确定它是否具备捕获标准输入,输出和错误,或具有监视器和超时等功能。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:0)

您可以使用ProcessBuilder来执行此操作

// Create ProcessBuilder.
ProcessBuilder p = new ProcessBuilder();
// Use command "notepad.exe" and open the file.
p.command("notepad.exe", "C:\\file.txt");
p.start();

或者

Process p = Runtime.getRuntime().exec("cmd /c start " + file.getAbsolutePath());