与操作系统无关的符号链接/别名/快捷方式

与操作系统无关的符号链接/别名/快捷方式

我有一个文件夹,我将其与 Dropbox 等在线服务同步,并将其同步到其他操作系统的计算机。此文件夹中的部分文件/文件夹组织使用符号链接/别名(我的家用计算机是 Mac)。当它将文件夹同步到 Windows 计算机时,不幸的是,符号链接和别名无法识别,但快捷方式可以识别。

有没有办法在 Mac 或 Windows 上创建一次符号链接/快捷方式并实现跨平台兼容性?否则我必须为每个文件创建两个链接,一个用于 Mac/Linux,一个用于 Windows。

注意:我知道有人会问,这个文件夹的目的是在文件夹中组织和存储大量文件。有时,一个文件或文件夹似乎适合两个或更多地方,因此需要符号链接。这是 Mac/Linux 上非常常见的做法。

答案1

根据这篇 How-to-geek 文章,您可以mklink从 cmd(Windows Vista - 10)使用它来创建在 Linux 中也可以使用的符号链接。该指南还提供了一种安装工具的方法,可以使链接更容易(通过将其添加到右键单击菜单中)。

命令行语法链接是:

mklink /PARAM link_path existing_file_or_dir_path 

/PARAM可以在哪里:

/D – 创建软符号链接,类似于 Windows 中的标准快捷方式。这是默认选项,如果您不输入选项,mklink 将使用它。

/H – 创建文件的硬链接

/J – 创建到目录或文件夹的硬链接

我刚刚做的一个例子:

mklink /J D:\Dropbox\school\14Winter\cs355 D:\Dropbox\school\classes\cs355

14Winter这会创建一个指向cs355现有文件夹cs355的链接classes

在 Windows 上创建链接后,该链接在我的 Linux 机器上也能正常工作。我还没有尝试过 Mac。如果您发现它在 Mac 上不起作用,请告诉我。

笔记: mklink是一个cmd选项,但 PowerShell 无法识别


旧答案:Python 脚本

这是一个愚蠢但可能有用的解决方案:你可以编写一个与链接无关的小型 Python 脚本(代码找到这里

#!/usr/bin/python
import subprocess
import sys

if sys.platform == 'darwin':
    def openFolder(path):
        subprocess.check_call(['open', '--', path])
elif sys.platform == 'linux2':
    def openFolder(path):
        subprocess.check_call(['gnome-open', '--', path])
elif sys.platform == 'win32':
    def openFolder(path):
        subprocess.check_call(['explorer', path])

openFolder("relative/path")

注意:这将始终打开一个新窗口。

相关内容