我有一个文件夹,我将其与 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")
注意:这将始终打开一个新窗口。