2

这是我通常用来执行快捷方式文件 (.lnk) 的代码

  //Get Directory
  String currentDir = new File(game.getGamePath()).getCanonicalPath();

  //Parse Directory to put apostrophes around shortcut name    
  currentDir = currentDir.substring(0, currentDir.lastIndexOf("\\") + 1) + '"' +                      
  currentDir.substring(currentDir.lastIndexOf("\\") + 1, currentDir.length()) + '"';

  //prep the launcher
  ProcessBuilder processBuild = new ProcessBuilder();
  processBuild.command("cmd", "/c", "start" ,"/wait", "", currentDir);

  //launch 
  Process = processBuild.start();
  try {
       Process.waitFor();
  } catch (InterruptedException ex) {

  }

问题是当快捷方式文件名有空格时,我从 Windows 收到一个错误,说它无法加载 [WordAfterSpace.ink]

例如说我有一个值为 [Desktop\A B.lnk] 的 currentDir

解析为 [Desktop\"A B.ink"] ,这在命令提示符下完美运行。

问题是如果我使用上面的代码我会得到这个错误:

Windows 找不到“B.ink”,请确保您输入的名称正确,然后重试

4

1 回答 1

1

使用 \" 在字符串中获取双引号 此外,请从头开始引用整个链接,而不是仅引用链接名称,因为它之前可能有其他空格。这将使您免于麻烦。

于 2012-09-12T00:28:08.050 回答