我正在编写一个脚本来整理一堆散布在我的硬盘上的媒体,到目前为止,在我的Mac(Mac)上运行得非常好,因为我在目录中使用了符号链接来给人一种印象,位置,而实际的数据分布在4个驱动器上。
不幸的是,我必须在工作中使用Windows,当然在PHP 5.3之前没有符号链接的支持(而且我认为当命令行工具“mklink”第一次出现时需要Vista)。
作为一种解决方法,我考虑创build一个快捷方式,但我找不到一个方法。 有没有可能,还是有没有更好的解决scheme,我没有考虑?
感谢上面的答案,我发现你确实可以从PHP调用COM,这是我的第一个符号链接()替换:
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(); } }
在Vista之前,支持连接点(类似于UNIX符号链接)。
您需要Windows资源工具包中的linkd
工具(免费下载)。
快捷方式只是文件。 您可以使用COM WScript API创建快捷方式文件。 示例代码使用Python执行此操作。 如果有一个PHP的库,可以让你做COM互操作,你应该可以做类似的事情。
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()
为了记录,NTFS上的连接点实际上只用于目录。 我使用linkd.exe创建了一个虚拟文件系统,取得了很大的成功,但还有一些事情需要注意:
欢呼关于创建.lnk文件的有用的职位,正是我之后…