代码之家  ›  专栏  ›  技术社区  ›  Sammy Guergachi

如何使用ProcessBuilder在Java中启动带有空格的快捷方式

  •  2
  • Sammy Guergachi  · 技术社区  · 12 年前

    这是我通常用来执行快捷方式文件(.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) {
    
      }
    

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

    例如,假设我有一个currentDir,值为[Desktop\a B.lnk]

    经过分析,它将是[Desktop\“A.B.ink”],这在命令提示符下非常有效。

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

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

    1 回复  |  直到 12 年前
        1
  •  1
  •   nick    12 年前

    使用“”在字符串中获取双引号 此外,从一开始就引用整个链接,而不仅仅是链接名称,因为它之前可能有其他空格。这将省去你的麻烦。