我们目前正在编写一个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应用程序。我不确定它是否具备捕获标准输入,输出和错误,或具有监视器和超时等功能。
任何帮助都非常感激。
答案 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());