我目前正在尝试查看是否可以在Java中的powershell中运行windows(.lnk)文件中的程序快捷方式。我知道有更好的工具可供使用,我应该直接与.exe进行交互,但请幽默我,这是出于测试目的。
基本上,我需要通过来自java的powershell运行.lnk文件。我目前面临的主要困境是应该在powershell中运行的命令
"start \"C:/Adobe Reader X.lnk\""
在IDE中,这将正确运行Adobe Reader,但在初始化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读者不会运行,甚至无法启动。任何帮助将不胜感激。