我目前正在尝试查看是否可以在Java中的powershell中运行Windows(.lnk)文件中的程序快捷方式。 我知道有更好的工具可以使用,而且我应该直接与.exe进行交互,但请幽默我,这是为了testing的目的。
所以基本上,我需要通过Java的PowerShell运行.lnk文件。 我目前所面临的主要困境是应该从powershell内部运行的命令
"start \"C:/Adobe Reader X.lnk\""
在IDE中,这将正确运行Adobe阅读器,但是在初始化ProcessBuilder之后的java中,尝试通过这个参数,它不起作用。 它将运行powershell进程。 这里是我传递给我的方法的代码:
String[] command2 = { /*"cmd.exe", "/C",*/ "powershell", "-Command","&","start \"C:/Adobe Reader X.lnk\"" };
正如你所看到的,我也尝试从CMD开始。 这是我的运行代码。 我读的输出(这是没有)我只是想在一个线程中启动Adobe Reader,然后我可以通过Tasklist检查过程是否正在运行。
public void run() { String line2; ProcessBuilder probuilder = new ProcessBuilder(command); Process process = null; try { process = probuilder.start(); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } java.io.InputStream is = process.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); // create a reader for the return data from cmd. StringBuilder sb = new StringBuilder(); // create a string builder to automate the string addition try { while ((line2 = br.readLine()) != null) {// build the input // string from // cmd. sb = sb.append(line2); System.out.println(line2); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
通过这个之后,我只是简单地运行powershell进程,但是Adobe阅读器不运行,甚至不启动。 任何帮助将不胜感激。