这篇文章上次修改于 236 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

关于 mklink

我的理解是 Linux 上 ln(link) 命令的丐版,并且只能在 cmd 环境使用,我用 PowerShell 显示没有这个命令.

功能

可选参数很少,所以功能也很少.
这描述还有点绕,意思就是支持文件和文件夹链接,然后还分符号链接(类似软链接)和硬链接.
最后两个参数就是新生成的链接地址 (Link) 和被链接地址 (Target) 了.

mklink

平替

power shell 环境下的, 看起来更清楚.

New-Item -ItemType HardLink -Path "目标路径" -Name "链接名称" -Value "目标文件的路径"
New-Item -ItemType SymbolicLink -Path "目标路径" -Name "链接名称" -Value "目标目录的路径"

无聊的测试

让我想起了被软件测试折磨的日子~

  1. OneDrive 测试

    • 在桌面创建符号链接 A, 向 A 添加文件, OneDrive 可以实现文件同步;
    • 尝试移动 A 至桌面其他文件夹,在其他文件夹中新生成一个文件夹 A, A 中内容被移动成功 (桌面的仍存在,但只剩下一个被进程占用的个人保管库)
    • 在 D 盘中创建符号链接 B, 向 B 添加文件同步成功
  2. 路径测试

    • 懒得测了,反正绝对链接在哪都能用,相对在文件夹内部也能用
  3. 链接测试

    • 删除链接,源文件/文件夹仍存在并且内容不受影响
    • 删除源文件符号链接失效,硬链接有效.类比 Linux
    • 相对路径的符号链接移动后失效,但相对位置存在同名文件可关联(类似于 ../../folder)
    • 绝对路径符号链接同盘不受影响,跨盘后失效并且不会恢复
    • 硬链接不能跨盘创建,因为是指向磁盘同一位置?

作用

好像知道了也没什么大用,目前拿来同步软件在文档中生成的配置文件,命令如下:
mklink /d /j C:\Users\用户名\Documents C:\Users\用户名\OneDrive\文档 Target 用根目录的话会感觉很乱,因为 Document 是已经存在的所以需要把里面的文件先移出去,删除后再运行命令 (两个路径反过来不删也行
或者你也可以在 OneDrive 的设置里勾选同步文档等重要文件,那可比这方便多了

2022-09-24T08:41:21.png

同步其他文件同理,也可以把装 C 盘的某些占用空间大的软件资源包给移动到其他盘去,比如 VS Code 什么的根本就没路径可选

最后

要是我有钱可能就不会捣鼓这个了,网络磁盘吊打这种方式,加硬盘吊打一切空间不够!
好在新电脑预留了两个 M.2 和一个 STAT, 等钱到位了都好说.