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) {

  }

問題は、ショートカットファイル名にスペースが含まれている場合、ウィンドウから[WordAfterSpace.ink]を読み込めないというエラーが表示されることです。

たとえば、値が[Desktop \AB.lnk]のcurrentDirがあるとします。

解析すると[Desktop\"A B.ink"]になり、これはコマンドプロンプトで完全に機能します。

問題は、上記のコードを使用すると、このエラーが発生することです。

Windowsが「B.ink」を見つけることができません。名前を正しく入力したことを確認して、再試行してください

4

1 に答える 1

1

文字列内で二重引用符を取得するには、\ "を使用します。また、リンク名の前に他のスペースがある場合があるため、リンク名だけでなく、リンク全体を最初から引用します。これにより、問題を回避できます。

于 2012-09-12T00:28:08.050 に答える