我们目前正在编写一个java应用程序,该应用程序允许用户使用我们的程序执行另一个程序。这个其他程序可以是另一个可执行文件或脚本,并且可以采用任意数量的命令行参数。我们已经构建了一个GUI来实现这一点,在基本功能的情况下,它可以工作。
我们正在使用apacheexec来实现这一点,尽管在这一点上我实际上不确定它给我们带来了什么价值
我遇到的问题是已知的脚本文件类型。
如果您打开powershell并键入./myVisualBasicScript.vbs
,它将在内部将其转换为类似wscript.exe ./myVisualBasicScript.vbs
的命令。类似地,iirc,在bash中,如果您键入./someTCShellScript.tcsh
,它将在tcshell下调用该脚本。
我想知道是否有一个库可以为我提供这种映射。理想情况下,这个库是我可以做类似的事情的库
CommandLine cmd = new com.awesome.library.CommandLine(
pathToExecutableOrScript,
args
);
cmd.execute();
如果这样的库带有看门狗、超时和信号处理等功能,那就太好了,但我正在寻找的主要功能是某种方法,可以将文件类型(最好同时使用扩展名和元属性)映射到运行它们的可执行文件。
我一直在我们的应用程序中构建映射,我至少知道javasjava.awt.Desktop.open()
方法,它几乎为我完成了这项工作,尽管它更适合GUI应用程序。我不确定它是否有捕获标准输入、输出和错误的设施,或者是否有看门狗和超时等。
非常感谢您的帮助。
您可以使用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());