2009-04-27 13 views
4

私はハードドライブに広がるメディアを整理するためのスクリプトを書いています。ディレクトリ内のシンボリックリンクを使用することで、すべてのものが整理されているという印象を与えることができます。実際のデータは4つのドライブに分散されます。PHPを使用してWindowsのショートカットを作成することはできますか?

残念ながら、私は職場でWindowsを使用しなければなりません。もちろん、PHP 5.3まではシンボリックリンクがサポートされていません。(そして、コマンドラインツール「mklink」が登場したのでVistaが必要です。

回避策として、私はショートカットの作成を検討しましたが、その方法を見つけることができません。それは可能ですか、それとも私が考慮していないよりよい解決策ですか?

答えて

6

上記の答えのおかげで、私はあなたが実際にPHPからCOMを呼び出すことができることを発見し、ここでのシンボリックリンクの私の最初のドラフトは(だ)交換:NTFS上の記録、接合点については

if (! function_exists('symlink')) { 
    function symlink($target, $link) { 
     if (! substr($link, -4, '.lnk')) 
      $link .= '.lnk'; 

     $shell = new COM('WScript.Shell'); 
     $shortcut = $shell->createshortcut($link); 
     $shortcut->targetpath = $target; 
     $shortcut->save(); 
    } 
} 
+0

あなたはlinkdコマンドを使用してに見ていましたか? – codeape

+0

私は一見を持っていた、はい。しかし、私は、余分なツールを必要とせずに、すぐに使えるソリューションを求めていました。そして、私は、XP上の接合点を使用することから(恐らく真実ではない)いくつかの話を聞いたことがある。 – Drarok

+0

ああ、また、私はこのページを読んでいます:http://support.microsoft.com/kb/205524これは、接続ポイントがディレクトリのみであることを示唆しているようですが、私はファイルを指す必要があります。 – Drarok

2

Vista以前の接続点(UNIXのシンボリックリンクに似ています)がサポートされています。

Windowsリソースキット(無料ダウンロード)からlinkdツールが必要です。

ショートカットは単なるファイルです。ショートカットファイルは、COM WScript APIを使用して作成できます。サンプルコードはPythonを使用してこれを行います。 COM相互運用を可能にするPHPのライブラリが存在する場合は、同様のことができるはずです。

import win32com.client 
import winshell 

userDesktop = winshell.desktop() 
shell = win32com.client.Dispatch('WScript.Shell') 

shortcut = shell.CreateShortCut(userDesktop + '\\Zimbra Webmail.lnk') 
shortcut.Targetpath = r'C:\Program Files\Mozilla Firefox\firefox.exe' 
shortcut.Arguments = 'http://mysite.com/auth/preauth.php' 
shortcut.WorkingDirectory = r'C:\Program Files\Mozilla Firefox' 
shortcut.save() 
0

確かにディレクトリのためだけです。私は、仮想ファイルシステムを作成するためにlinkd.exeを使用して大きな成功を収めているが、注意すべきいくつかあります:あなたは(つまりはCでリンクを作成しようとしているボリューム間でリンクすることはできません

  • は:を指していることD:の場所は機能しません)
  • リンクを解除すると、あて先のデータが散発的に削除されているようです。リンクを削除する前にデータをバックアップ/移動してください!
  • ネットワークを介してマウントされたボリュームとしてデータを共有する場合、ジャンクションポイントで同じ問題が発生します。リモートからは動作しないこともあります。また、宛先リンクをどのように設定しても、ソースフォルダから一部の共有パーミッションを無作為に(時には)継承しているように見えます。私が後だっただけで何.lnkファイルを作成に関する有用な記事のための

乾杯、...

関連する問題